Архив метки: рейтинг

Каркас многопоточного парсера: применение на примере парсинга IMDB Top 250

Замечание: В этой статье под многопоточностью имеется в виду использование возможностей multi-curl, а под парсером/парсингом — общая схема (алгоритм) сбора данных с вебсайта. Парсинг HTML (DOM) здесь не рассматривается.

Я довольно долгое время пишу многопоточные парсеры на PHP. За это время у меня сформировался некий каркас, включающий в себя часто используемые вещи в парсерах. К их числу относятся:

  • сохранение и восстановление текущего состояния парсера.
  • остановка (пауза) парсера по заданному таймауту.
  • остановка (пауза) парсера по внешнему запросу, например, по нажатию кнопки паузы в интерфейсе парсера.
  • получение текущего прогресса выполнения парсера, например, для вывода его в интерфейсе парсера.

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

Кроме того, использование multi-curl накладывает определенные ограничения на структуру кода парсера. Каркас берет на себя все тонкости, связанные с multi-curl. Но платой за это становится жесткая структура, которой должен следовать код парсера (впрочем это обычное свойство каркасов). По сути весь функционал парсера реализуется через колбеки — методы, вызываемые каркасом при определенных событиях.

Читать далее