Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }