Beispiel #1
0
        public async Task Initialize()
        {
            var    keywords = config.GetSection("Parsing:Keywords").GetChildren().ToArray().Select(c => c.Value).ToArray();
            string pattern  = keywords
                              .Aggregate("", (acc, next) => acc + $"({next})|");

            pattern = pattern.Remove(pattern.Length - 1);
            Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);

            var options = new ChromeOptions();

            options.AddArguments("headless");
            options.AddArguments("--disable-dev-shm-usage");
            options.AddArguments("--no-sandbox");
            options.AddArguments("no-sandbox");
            var path = Environment.GetEnvironmentVariable("CHROMEDRIVER_DIRECTORY");
            ChromeDriverService chromeService;

            if (path != null)
            {
                chromeService = ChromeDriverService.CreateDefaultService(path);
            }
            else
            {
                chromeService = ChromeDriverService.CreateDefaultService();
            }
            var webDriver = new ChromeDriver(chromeService, options, TimeSpan.FromMinutes(3));

            webDriver.Manage().Timeouts().PageLoad.Add(TimeSpan.FromSeconds(30));

            var promUaShop = await shopsRepository.GetShop("Prom");

            var rozetkaShop = await shopsRepository.GetShop("Rozetka");

            var epicentrShop = await shopsRepository.GetShop("Epicentr");

            var promUaParser   = new PromUaParser(config, promUaShop, regex, webDriver);
            var rozetkaParser  = new RozetkaParser(config, rozetkaShop, regex, webDriver);
            var epicentrParser = new EpicentrParser(config, epicentrShop, regex, webDriver);

            parsers.Add(promUaParser);
            parsers.Add(rozetkaParser);
            parsers.Add(epicentrParser);
        }
Beispiel #2
0
 public async Task <ShopDto> GetShop(int shopId)
 => await shopsRepository.GetShop(shopId);