Ejemplo n.º 1
0
        public async void StartParse()
        {
            if (StartPage > EndPage)
            {
                Informer.RaiseOnResult("Начальная страница не может быть больше конечной!");
                return;
            }
            using (_writer = File.CreateText(FileName))
            {
                for (var i = StartPage; i <= EndPage; i++)
                {
                    if (Abort)
                    {
                        Informer.RaiseOnResult("Сканирование прервано!");
                        return;
                    }
                    var html = await GetSourceByPage(i);

                    var htmlDocument = new HtmlDocument();
                    htmlDocument.LoadHtml(html);
                    Parse(htmlDocument);
                    Informer.RaiseOnResult($"Готова страница № {i}");
                }
            }
            Informer.RaiseOnResult("Все страницы просканированы!");
        }
Ejemplo n.º 2
0
 private void ParsePages()
 {
     try
     {
         _parser.ParseUrl = new UriBuilder(UrlTextBox.Text).Uri.AbsoluteUri;
         _parser.ParsePages();
     }
     catch (Exception)
     {
         Informer.RaiseOnResult("Невозможно выполнить разбор имени хоста!");
     }
 }
Ejemplo n.º 3
0
        public async void ParsePages()
        {
            try
            {
                var html = await _client.GetStringAsync(ParseUrl);

                var htmlDocument = new HtmlDocument();
                htmlDocument.LoadHtml(html);

                var pagesCount = htmlDocument
                                 .DocumentNode.Descendants("a")
                                 .Where(node => node.GetAttributeValue("class", "")
                                        .Equals("x-pager__item")).ToArray();
                PagesParseCompleted?.Invoke(pagesCount.Length != 0 ? int.Parse(pagesCount[pagesCount.Length - 1].InnerText) : 0);
            }
            catch (Exception)
            {
                Informer.RaiseOnResult("Невозможно выполнить разбор имени хоста!");
            }
        }
Ejemplo n.º 4
0
        private void PagesParseCompleted(int pagesCount)
        {
            switch (pagesCount)
            {
            case 0:
                PagesCountLabel.Content = "Данный раздел содержит одну страницу";
                Informer.RaiseOnResult("Анализ количества страниц окончен.");
                PagesCountLabel.Visibility  = Visibility.Visible;
                StartParseButton.Visibility = Visibility.Visible;
                _parser.StartPage           = 1;
                _parser.EndPage             = 1;
                break;

            default:
                _parser.StartPage       = 1;
                _parser.EndPage         = pagesCount;
                PagesCountLabel.Content = $"Данный раздел содержит {pagesCount} страниц.";
                Informer.RaiseOnResult("Анализ количества страниц окончен.");
                PagesCountLabel.Visibility  = Visibility.Visible;
                StartParseButton.Visibility = Visibility.Visible;
                break;
            }
        }
Ejemplo n.º 5
0
 private void StartParsePagesButton_OnClick(object sender, RoutedEventArgs e)
 {
     Informer.RaiseOnResult("Начинаю анализ количества страниц.");
     ParsePages();
 }
Ejemplo n.º 6
0
 private void StartParseButton_OnClick(object sender, RoutedEventArgs e)
 {
     Informer.RaiseOnResult("Начинаю сканирование указанных страниц.");
     Parse();
 }