Задать вопрос
titulusdesiderio
@titulusdesiderio
IT-специалист

Лучший ЯП для парсинга веб-сайтов

Последние несколько недель пишу веб-парсер на php. У меня и раньше закрадывались сомнения. Но, после прочтения этой статьи и комментариев к ней, я убедился, что нужно искать другой путь. А точнее другой язык.

Какой, по вашему мнению, ЯП (+Фреймворк/библиотека) лучше всего подходит именно для задачи парсинга веб-страниц?
Буду весьма благодарен за аргументированные ответы. А ещё больше за ссылки на статьи по использованию ЯП в этом направлении и/или на репозитории проектов по теме.

Немного о конкретной задаче, над решением которой я работаю: 50+ независимых сайтов (производителей определённых видов продукции), с которых нужно собрать базу их продуктов. Нужно не только 1 раз прогнать, но и повторять прогон хотя бы раз в день, или при появлении новых продуктов (а следовательно и дописывать код при появлении новых особенностей у новых продуктов). Ввиду большого количества сайтов (которое со временем будет только увеличиваться) необходима возможность масштабирования. При этом крайне важна унификация всех параметров.
  • Вопрос задан
  • 27257 просмотров
Подписаться 41 Оценить Комментировать
Решение пользователя mithraen К ответам на вопрос (15)
@mithraen
Как только возникает слово «парсинг», в первую очередь стоит вспоминать о Perl (Practical Extraction and Report Language). Для решения этой задачи там есть:

  • модули для работы с HTTP — как низкоуровневые, так и специальные, типа WWW::Mechanize — удобен, если надо написать скрипт, который последовательно выполняет какой-то набор операций (например надо автоматизировать какие-то действия пользователя web-интерфейсе, а API никакого не предусмотрено);
  • модули для асинхронной работы по HTTP (AnyEvent::HTTP) — позволяют написать робота, который без необходимости создавать множество тредов будет выполнять одновременно несколько запросов;
  • регулярные выражения — мощнейший инструмент для парсинга данных, и в perl его использование наиболее удобно (это часть синтаксиса языка);
  • библиотеки для разбора HTML в дерево (например HTML::Parser);


Python хороший скриптовый язык общего назначения, но для задач разбора данных код на Perl будет куда проще.
Ответ написан