Пример #1
0
        public virtual async Task CollectData(City city)
        {
            CurrentCity = city;
            await _repository.ClearOffers(CurrentCity, TargetWebsite.Name);

            for (int i = 0; i < await GetPagesCount(); i++)
            {
                var url     = _urlGenerator.GeneratePageUrl(city, i);
                var htmlDoc = await HtmlClient.LoadFromWebAsync(url);

                var nodes = htmlDoc.DocumentNode
                            .SelectNodes(TargetWebsite.DocumentNodeXPath).ToList();

                var offers = GetDetails(nodes);
                await _repository.AddMany(offers);

                //todo find better anti-ban solution
                Thread.Sleep(4000);
            }
        }