Лучшая стратегия для создания пользовательской системы пакетного поиска?

Привет, мне нужно создать сайт, похожий на действительно.com и многие другие, который отслеживает ряд рекламных сайтов и анализирует HTML, чтобы отображать объявления на моем собственном сайте.

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

Есть ли более подходящая стратегия для достижения этой цели? Мне сказали, что Perl — очень сильный язык пакетных сценариев. Так ли это?? Как мне начать?

Лучший,


person denica    schedule 11.02.2010    source источник
comment
У Google есть это: cs.utk.edu/cs594ipm/perl/crawltut.html   -  person Natrium    schedule 11.02.2010


Ответы (1)


Хорошая новость в том, что вы можете сделать это на 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