Действие парсера «HTML: Многопоточная загрузка»

Действие "HTML: Многопоточная загрузка" (далее Действие) предназначено для загрузки массива ссылок в несколько потоков с целью уменьшения времени загрузки.

Как изображено на рисунке, Действие одновременно загружает несколько страниц, а не по очереди, как в случае обычной загрузки.

Многопоточная загрузка работает не для всех сайтов. Если на сайте есть ограничение доступа при множественных запросах, то вы не получите нужный массив страниц. Скорее всего, вы получите несколько загруженных страниц, а остальные будут либо пустыми, либо с сообщениями об ограничении доступа. Более того, некоторые сайты могут заблокировать вам доступ на какое-то время или даже навсегда. Используйте данное действие на свой страх и риск!

На входе Действие может принимать как массив ссылок, так и отдельную ссылку, но в последнем случае существенных отличий от применения действия "Загрузить ИСХОДНЫЙ КОД веб-страницы" мы не получим.

Таким образом, в отличие от стандартной схемы настройки парсера, когда ссылку на каждую страницу мы передаем на следующий подуровень исходных действий, при применении Действия, его не надо переносить на следующий подуровень, оно должно находиться на том же уровне, на котором извлекается массив ссылок.

Пример использования:

Действие Параметр Значение Результат
Загрузить ИСХОДНЫЙ КОД веб-страницы URL https://excelvba.ru/programmes/addins Исходный код веб-страницы (длиной 26792 символа)

Кодировка веб-страницы
Загружать все страницы результатов
Кеширование
HTML: Поиск тегов Тип элемента div Часть HTML-кода веб-страницы (длиной 11202 символа)

Название проверяемого атрибута class
Значение проверяемого атрибута item-list
Тип результата / извлекаемый атрибут innerHTML
HTML: Поиск тегов Тип элемента a Массив из 9 значений:

https://excelvba.ru/programmes/FillDocuments
https://excelvba.ru/programmes/Parser
https://excelvba.ru/programmes/PastePictures
https://excelvba.ru/programmes/Unification
https://excelvba.ru/programmes/Labels
https://excelvba.ru/programmes/Lookup
... (ещё 3 значения)
Название проверяемого атрибута
Значение проверяемого атрибута
Тип результата / извлекаемый атрибут href_with_prefix
HTML: Многопоточная загрузка Количество потоков 20 Массив из 9 значений:

Кодировка веб-страниц
HTML фильтры

Если вместо многопоточной загрузки в данном примере подставить "Загрузить ИСХОДНЫЙ КОД веб-страницы", то результат будет тот же самый - массив из 39 страниц. Но время загрузки данного примера для многопоточного варианта: 10 секунд, а время для однопоточной загрузки - 37 секунд. Скорость работы увеличивается почти в 4 раза.

Действие имеет 3 параметра:

  1. Количество потоков (по умолчанию - 20). Параметр подбирается опытным путем. Не рекомендуется ставить больше 150 потоков. Большее значение может дать как более быструю загрузку, так и большее количество ошибок. Кроме того, большое количество потоков может создать излишнюю нагрузку на ресурсы компьютера, что приведет к замедлению работы.
  2. Кодировка веб-страницы. Кодировка подбирается автоматически, но есть возможность задать её принудительно.
  3. HTML фильтры. Позволяет сразу брать нужный тег из загружаемой страницы, что приводит к уменьшению обрабатываемых и хранимых данных, как следствие, к возможному ускорению работы и снижению расходуемых ресурсов (но надо учитывать, что на поиск тега тоже уходит время, поэтому уменьшение общего времени или его увеличение будет зависеть от конкретного сайта).
    Синтаксис: с указанием тега, атрибута и его значения, например: div class=main или с указанием только атрибута и его значения, например: id=main.

Во время работы Действия появляется дополнительный прогресс бар, который отображает информацию о многопоточной загрузке - какое количество ссылок загружается, во сколько потоков, какой прогресс действия (может отображаться с задержкой или же вообще прогресс не будет отображаться из-за большой загрузки компьютера).

Индикатор загрузки может быть трех цветов: 

  • Зеленый - многопоточная загрузка идет в штатном режиме (что тем не менее не гарантирует полноты загруженных данных)

     
  • Красный - возникли ошибки при загрузке (можно попробовать уменьшить количество потоков)

     
  • Фиолетовый - часть страниц не загрузилась из-за остановки по тайм-ауту (в этом случае можно попробовать увеличить тайм-аут загрузки в настройках парсера)

     

Если необходимо получить URL загружаемой страницы, то при применении Действия специально для этого в HTML-код страницы добавляется тег <info>. Находится он или перед тегом </head>, или в случае, если применяется HTML фильтр, перед найденным тегом, т.е. в самом начале полученного кода.

<info id='parser multithreading' status='200' encoding='utf-8' href='https://www.olx.ua/obyavlenie/prodam-slavutu-IDvqoOC.html'></info>

При выводе на лист его можно найти при помощи действия HTML: Поиск тегов

Status в данном случае обозначает код состояния HTTP.
Код ответа 200 - это указание на успешную загрузку. А код ответа 404, например, - страница не найдена

Комментарии

А почему при использовании "Многопоточной загрузки" загрузка страниц происходит не через прокси?
Как можно сделать загрузку многопоточной с прокси?