mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!
Статья является инструкцией по надстройке Parser

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

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

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

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

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

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

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

Действие Параметр Значение Результат
Загрузить ИСХОДНЫЙ КОД веб-страницы URL https://www.olx.ua/transport/legkovye-avtomobili/ Исходный код веб-страницы (длиной 348106 символов)
Кодировка веб-страницы  
Загружать все страницы результатов  
HTML: Поиск тегов Тип элемента table Часть HTML-кода веб-страницы (длиной 138892 символа)
Название проверяемого атрибута id
Значение проверяемого атрибута offers_table
Тип результата / извлекаемый атрибут innerHTML
HTML: Поиск тегов Тип элемента a Массив из 78 значений:
Название проверяемого атрибута class
Значение проверяемого атрибута detailsLink
Тип результата / извлекаемый атрибут href_with_prefix
Часть строки по разделителю (split) Разделитель # Массив из 78 значений:
Индекс нужной части 1
Список имён переменных через |  
Удалить повторяющиеся элементы массива     Массив из 39 значений:
HTML: Многопоточная загрузка Количество потоков 20 Массив из 39 значений:
Кодировка веб-страниц  
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, например, - страница не найдена