Exemplo n.º 1
0
        private async void Worker()
        {
            for (int i = parserSettings.StartPart; i <= parserSettings.EndPart; i++)
            {
                for (int j = parserSettings.StartArticle; j <= parserSettings.EndArticle; j++)
                {
                    if (!isActive)
                    {
                        OnCompleted?.Invoke(this);
                        return;
                    }

                    var source = await loader.GetSourceByPage(i, j);

                    var domParser = new HtmlParser();

                    var document = await domParser.ParseDocumentAsync(source);

                    var result = parser.Parse(document);

                    OnNewData?.Invoke(this, result);
                }
            }

            OnCompleted?.Invoke(this);
            isActive = false;
        }
Exemplo n.º 2
0
        // Метод контролирует процесс парсинга.
        async void Worker()
        {
            for (int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++)
            {
                if (!isActive)
                {
                    // Если работа парсера была остановлена.
                    OnCompleted?.Invoke(this);
                    return;
                }

                // Получает исходный код страницы с индексом из цикла.
                var source = await loader.GetSourceByPage(i);

                var domParser = new HtmlParser();

                // Парсит асинхронно код и получает страницу с которой можно работать.
                var document = await domParser.ParseDocumentAsync(source);

                // Передает парсеру документ и получает спарсенные данные.
                var result = parser.Parse(document);

                // Передает ссылку и результат.
                OnNewData(this, result);
            }

            // Если парсер закончил работу.
            OnCompleted?.Invoke(this);
            isActive = false;
        }
Exemplo n.º 3
0
        public async void Worker()
        {
            for (int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++)
            {
                if (IsActive)
                {
                    string source = await loader.GetSourceByPage(i); //Получаем код страницы

                    //Здесь магия AngleShap, подробнее об интерфейсе IHtmlDocument и классе HtmlParser,
                    //можно прочитать на GitHub, это интересное чтиво с примерами.
                    HtmlParser    domParser = new HtmlParser();
                    IHtmlDocument document  = await domParser.ParseDocumentAsync(source);

                    T result = parser.Parse(document);
                    OnNewData?.Invoke(this, result);
                }
            }

            OnComplited?.Invoke(this);
            isActive = false;
        }