internal static void PollingSearch(string connString, String code) { _WebDriverSetting.HideBrowser = false; Boolean success = false; Random random = new Random(); Int32 sleep = -1; Utilities.Utilities.Log(message: "Polling Details for key word Start ... ", isWriteLine: false, addTime: true); ChromeDriver driver = Utilities.WebDriverExtension.GetChromeDriver(hideBrowser: _WebDriverSetting.HideBrowser, hideCommand: _WebDriverSetting.HideCommand, isMaximized: true); List <KeyWordInfo> keyWrods = DataOperation.GetKeyWords(connString, code); Utilities.Utilities.Log(message: $"[{keyWrods.Count}]", isWriteLine: true); String category = String.Empty; foreach (KeyWordInfo keyWord in keyWrods) { if (category != keyWord.Category) { Utilities.Utilities.Log(message: $"[{keyWord.Category}] ... ", isWriteLine: true, addTime: true); category = keyWord.Category; } Utilities.Utilities.Log(message: $"Polling [{keyWord.KeyWordToSearch}] -> ", isWriteLine: false, addTime: true); Int32 page = 1; if (driver.GetGoogleSearches(keyWord.KeyWordToSearch)) { do { page = driver.GetGoogleSearchCurrenPage(); if (page > 0) { if (page == 1) { ReadOnlyCollection <IWebElement> elements = null; if (driver.GetElements("//div[@class='card-section']/div/p/a", ref elements, "card-section")) { success = pollingVed(connString, driver, keyWord, elements, true, page); } } success = pollingKeyWordDetails(connString, driver, keyWord, true, page); success = pollingKeyWordDetails(connString, driver, keyWord, false, page); Utilities.Utilities.Log(message: $"[{page}]", isWriteLine: false, addTime: false); //Thread.Sleep(random.Next(1 * 1000, 5 * 1000)); } } while (page > 0 && page < keyWord.Pages && driver.GetGoogleNextPage()); keyWord.Pages = page; success = DataOperation.UpdateSearchHistory(connString, keyWord); Utilities.Utilities.Log(message: $"[Done]", isWriteLine: true, addTime: false); //sleep = random.Next(40 * 1000, 80 * 1000); } else { //sleep = random.Next(400 * 1000, 800 * 1000); driver.Quit(); Console.WriteLine("Exit Application"); Environment.Exit(-100); } //Thread.Sleep(sleep); } driver.Quit(); }
internal static void PollingSearchByAPI(string connString, string code) { Boolean success = false; Utilities.Utilities.Log(message: "Polling Google Search from API ... ", isWriteLine: false, addTime: true); List <KeyWordInfo> keyWrods = DataOperation.GetKeyWords(connString, code); Utilities.Utilities.Log(message: $"[{keyWrods.Count}]", isWriteLine: true); String category = String.Empty; CustomsearchService customSearchService = new CustomsearchService(new BaseClientService.Initializer { ApiKey = API_KEY }); foreach (KeyWordInfo keyWord in keyWrods) { if (category != keyWord.Category) { Utilities.Utilities.Log(message: $"[{keyWord.Category}] ... ", isWriteLine: true, addTime: true); category = keyWord.Category; } Utilities.Utilities.Log(message: $"Polling [{keyWord.KeyWordToSearch}] -> ", isWriteLine: false, addTime: true); CseResource.ListRequest listRequest = customSearchService.Cse.List(keyWord.KeyWordToSearch); listRequest.Cx = SEARCH_ID; listRequest.Filter = CseResource.ListRequest.FilterEnum.Value1; listRequest.Start = 0; listRequest.Num = 10; listRequest.LowRange = "100"; listRequest.HighRange = "200"; IList <Result> paging = new List <Result>(); Int32 page = 0; Int32 count = 0; Int32 countError = 0; success = true; do { listRequest.Start = page * 10 + 1; Utilities.Utilities.Log(message: $"[{++page}]", isWriteLine: false, addTime: false); try { paging = listRequest.Execute().Items; if (paging != null) { foreach (Result item in paging) { if (item.FileFormat == null) { ++count; KeyWordDetailInfo keyWordDetail = new KeyWordDetailInfo(item, keyWord, false, page); if (success = !keyWordDetail.HasError) { success = DataOperation.UpdateSearchResult(connString, keyWordDetail); } if (!success) { ++countError; } } } } } catch (Google.GoogleApiException ex) { Utilities.Utilities.Log(message: $"[Error]\n{ex.Message}", isWriteLine: true, addTime: true, feedLine: true); success = false; break; } } while (page < 10 && paging != null); if (success) { keyWord.Pages = page; success = DataOperation.UpdateSearchHistory(connString, keyWord); Utilities.Utilities.Log(message: $"[Done] [{count}/{countError}]", isWriteLine: true, addTime: false); } } }