Beispiel #1
0
        public async Task Worker(string wwwroot)
        {
            for (int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++)
            {
                if (IsActive)
                {
                    HtmlParser domParser = new HtmlParser();

                    string source = await loader.GetSourceByPage(i);

                    IHtmlDocument document = await domParser.ParseDocumentAsync(source);

                    T idList = parser.GetCarIdsList(document);

                    List <IHtmlDocument> documents   = new List <IHtmlDocument>();
                    string[]             sourceArray = await loader.GetSourcesByCarIds((string[])(object)idList); // очень долго отрабатывает

                    foreach (var item in sourceArray)
                    {
                        documents.Add(await domParser.ParseDocumentAsync(item));
                    }
                    await parser.ParseCarDetailsAsync(documents, (string[])(object)idList);

                    List <IHtmlDocument> photoDocuments   = new List <IHtmlDocument>();
                    string[]             sourcePhotoArray = await loader.GetPhotoSourcesByCarIds((string[])(object)idList);

                    foreach (var item in sourcePhotoArray)
                    {
                        photoDocuments.Add(await domParser.ParseDocumentAsync(item));
                    }
                    await parser.ParseCarPhotosAsync(photoDocuments, (string[])(object)idList, wwwroot);

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

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