private async void Worker() { for (int i = 0; i < CurUrl.iter; i++) { if (i == 0) { if (!isActive) { OnCompleted?.Invoke(this); return; } var loader = new HtmlLoader(); var source = await loader.GetHtmlByUrl(CurUrl.url); var domParser = new HtmlParser(); var document = await domParser.ParseAsync(source); var result = parser.Parse(document); foreach (var item in CurUrl.changes) { CurUrl.urls.Add(item); } OnNewData?.Invoke(this, result); } else { foreach (var url in CurUrl.urls) { if (!isActive) { OnCompleted?.Invoke(this); return; } var loader = new HtmlLoader(); var source = await loader.GetHtmlByUrl(url.Replace("https", "http")); var domParser = new HtmlParser(); var document = await domParser.ParseAsync(source); var result = parser.Parse(document); OnNewData?.Invoke(this, result); } foreach (var item in CurUrl.changes) { CurUrl.urls.Add(item); } } } OnCompleted?.Invoke(this); isActive = false; }
public ParserWorker(IParser <T> parser, IParserSettings parserSettings) : this(parser) { this.parserSettings = parserSettings; loader = new HtmlLoader(parserSettings); }