Exemplo n.º 1
0
        //закрытый асинхр метод, который контролирует процесс парсинга
        private async void Worker()
        {
            //прогоняем цикл от стартовой до конечной настроек
            for (int i = parserSetings.StartPoint; i <= parserSetings.EndPoint; i++)
            {
                if (!isActive)
                {
                    //вызов события информирует о конце работы парсера
                    OnCompleted?.Invoke(this);
                    return;
                }
                //получаем исходный код страници с индексом из цикла
                var source = await loader.GetSourceByPageId(i);

                var domParser = new HtmlParser();

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

                //передаём док в парсер и записываем в переменную
                var result = parser.Parse(document);

                //вызов события которрое передаёт ссылку и результат
                OnNewData?.Invoke(this, result);
            }

            //вызов события информирует о конце работы парсера
            OnCompleted?.Invoke(this);
            isActive = false;
        }
Exemplo n.º 2
0
        //Работа парсера
        private async void Worker()
        {
            int pageValue = 1, i = 0;

            while (i++ < pageValue)
            {
                if (!isActive) //Если решили остановить парсер Abort()
                {
                    OnCompleted?.Invoke(this);
                    return;
                }
                var source = await loader.GetSourceByPageId(i); // {CurrentId}=i для реализации перехода по страницам

                var domParser = new HtmlParser();

                var document = await domParser.ParseDocumentAsync(source);

                var result = parser.Parse(document); //Парсинг необходимых данных
                if (i == 1)                          //Парсим количество страниц
                {
                    var page = document.QuerySelector(".paginator:nth-last-of-type(2)");
                    if (page != null)
                    {
                        pageValue = int.Parse(page.GetAttribute("title"));
                    }
                }
                OnNewData?.Invoke(this, result, i, pageValue);
            }
            OnCompleted?.Invoke(this);
            isActive = false;
        }
        private async void WorkerWithPages(string[] s)
        {
            // Просто сохдал лист, в который записываю обработку нескольких страниц(ссылки на них поступают в виде массива строк)
            List <T> weapSkins = new List <T>();

            for (int i = 0; i < s.Length; ++i)
            {
                var source = await loader.GetSourceByPageId(s[i]);

                var domParser = new HtmlParser();

                var document = await domParser.ParseDocumentAsync(source);

                var result = parser.Parse(document);
                weapSkins.Add(result);
            }
            OnNewData?.Invoke(this, weapSkins);
            OnCompleted?.Invoke(this);
        }
Exemplo n.º 4
0
        private async void Worker()
        {
            for (int i = parserSettings.StartPage; i <= parserSettings.EndPage; i++)
            {
                if (!isActive)
                {
                    OnCompleted?.Invoke(this);
                    return;
                }
                var source = await loader.GetSourceByPageId(i);

                var domParser = new HtmlParser();
                var document  = await domParser.ParseDocumentAsync(source);

                var result1 = parser.Parse(document, "1");
                OnNewData?.Invoke(this, result1);
            }

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