Esempio n. 1
0
        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);
 }