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; }
// Метод контролирует процесс парсинга. 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; }
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; }