Хорошая новость заключается в том, что вы можете сделать это в Perl. Плохая новость заключается в том, что это будет сложно. Так же, как это было бы на любом языке.
Сначала читайте Learning Perl.
Далее вам нужно собрать свой код для паука.
Начните с простого одиночного скрипта, который читает одну страницу за раз.
Существует множество модулей для получения веб-страниц. Что использовать зависит от ваших потребностей. Это становится еще более сложным, если вам нужно очистить страницу, созданную Javascript. Начните с LWP :: Simple или WWW :: Mechanize. Вы можете расширить оттуда.
Существует также множество модулей для разбора HTML. HTML :: Treebuilder - это мощный модуль, который работал очень хорошо для меня.
После того, как вы сможете надежно загрузить и проанализировать одну страницу, вам нужно будет добавить логику пауков. Затем вам нужно решить, как вы хотите сначала пересечь сайт - ширину или глубину? Вы собираетесь пойти с рекурсивным алогоризмом? Или, возможно, процедурный подход?
Если вы сканируете много страниц, которые вам нужно сканировать, вам может потребоваться создать контроллер для управления несколькими пауками. Вы можете использовать Coro, AnyEvent, POE, темы или стратегию, основанную на fork
, для управления вашими работниками. То, что вы выберете, будет зависеть от ваших потребностей.
Вы можете использовать модуль DBI с соответствующим драйвером (например, DBD :: MySQL) для вставки данных в свою базу данных.
Все, что вам нужно сделать, это сгенерировать ваше веб-приложение. Существует множество наборов инструментов различного уровня сложности и мощности. CGI :: Application and Catalyst - две популярные библиотеки. HTML :: Mason и Squatting - некоторые другие варианты.
Все перечисленные модули доступны в CPAN. Используемый надлежащим образом, CPAN сэкономит вам много работы. Для многих задач проблема - слишком много вариантов, а не их отсутствие.
Книга, конечно же, доступна в любом месте, где продаются книги.
Google предоставил мне следующее: http://www.cs.utk.edu/cs594ipm/perl/crawltut.html – Natrium