Хорошая новость в том, что вы можете сделать это на Perl. Плохая новость в том, что это будет сложно. Так же, как это было бы на любом языке.
Начните с чтения Обучение Перл.
Далее вам нужно будет собрать код для поиска.
Начните с простого одиночного сценария, который считывает по одной странице за раз.
Есть много модулей для получения веб-страниц. Что использовать, зависит от ваших потребностей. Это становится еще сложнее, если вам нужно очистить страницу, сгенерированную Javascript. Начните с LWP::Simple или WWW::Mechanize. Вы можете расширяться оттуда.
Также есть много модулей для парсинга HTML. HTML::Treebuilder — мощный модуль, который мне очень хорошо зарекомендовал себя.
Как только вы сможете надежно загружать и анализировать одну страницу, вам нужно будет добавить логику сканирования. Затем вам нужно решить, как вы хотите перемещаться по сайту — сначала в ширину или вглубь? Собираетесь ли вы использовать рекурсивный алгоритм? Или, может быть, процедурный подход?
Если вы сканируете много страниц, которые необходимо отсканировать, вам может потребоваться создать контроллер для управления несколькими поисковыми роботами. Вы можете использовать Coro, AnyEvent, POE, потоки или стратегию на основе fork
для управления вашими воркерами. То, что вы выберете, будет зависеть от ваших потребностей.
Вы можете использовать модуль DBI с соответствующим драйвером (например, DBD::MySQL) для вставки данных в вашу базу данных.
Все, что вам нужно сделать сейчас, это создать свое веб-приложение. Доступно множество наборов инструментов разного уровня сложности и мощности. CGI::Application и Catalyst — две популярные библиотеки. HTML::Mason и Squatting — некоторые другие варианты.
Все перечисленные мной модули доступны на CPAN. При правильном использовании CPAN сэкономит вам много работы. Для многих задач проблема заключается в слишком большом количестве вариантов, а не в их отсутствии.
Книга, конечно же, доступна везде, где продаются книги.
person
daotoad
schedule
11.02.2010