Расширяемый / Настраиваемый Web Crawling Engine / Frameworks / Библиотеки? - PullRequest
2 голосов
/ 20 августа 2009

У меня относительно простой случай. Я в основном хочу хранить данные о ссылках между различными сайтами и не хочу ограничивать домены. Я знаю, что мог бы написать свой собственный сканер, используя некоторую клиентскую библиотеку http, но я чувствую, что буду выполнять какую-то ненужную работу - проверять, чтобы страницы не проверялись более одного раза, определять, как читать и использовать файл robots.txt возможно, даже пытаюсь сделать его параллельным и распределенным, и я уверен, что есть много других вещей, о которых я еще не подумал.

Итак, я хотел каркас для сканирования в Интернете, который бы заботился о подобных вещах, позволяя мне диктовать, что делать с ответами (в моем случае, просто извлекать ссылки и хранить их). Большинство сканеров предполагают, что вы индексируете веб-страницы для поиска, и это бесполезно, мне нужно что-то настраиваемое.

Я хочу сохранить информацию о ссылке в базе данных MongoDB , поэтому мне нужно иметь возможность диктовать, как ссылки хранятся в платформе. И хотя я пометил вопрос как независимый от языка, это также означает, что я должен ограничить выбор каркасом в одном из поддерживаемых языков MongoDB (Python, Ruby, Perl, PHP, Java и C ++), который является очень широкая сеть Я предпочитаю динамические языки, но я открыт для любых предложений.

Я смог найти Scrapy (который выглядит аккуратно) и JSpider (который кажется хорошим, но, возможно, немного "сверхмощным"), основываясь на странице 121 руководство пользователя), но я хотел посмотреть, есть ли другие хорошие варианты, которых мне не хватает.

Ответы [ 3 ]

6 голосов
/ 23 августа 2009

Полагаю, вы уже искали Переполнение стека, поскольку в этих тегах web-crawler есть довольно много похожих вопросов? Не пользуясь ничем из перечисленного ниже, я воздерживаюсь от разработки и просто перечислю несколько из них, которые, как мне кажется, стоит рассмотреть для рассматриваемой задачи:

  • Python
  • Ruby (никогда не использовал их вообще)
  • Perl
    • WWW-Mechanize : очень зрелый проект, хорошо документированный.
  • Java
    • Nutch : довольно зрелый проект, хорошо документированный, посвященный расширению, основанный на Apache Lucene , который очень зрелый и имеет сильное сообщество; Тем не менее, по-видимому, существуют проблемы, связанные с расширенными сценариями интеграции, см. этот вопрос .
    • Heritrix : очень зрелый проект, хорошо документированный, выделенная расширяемость, основа Интернет-архива ; Похоже, что для некоторых лучше использовать расширенные сценарии интеграции, см. этот вопрос .

Ну, удачи в обзоре;)

0 голосов
/ 22 ноября 2017

StormCrawler не было рядом, когда был задан этот вопрос, но идеально соответствовал бы требованиям. Он написан на Java, имеет высокую модульность и масштабируемость и может быть настроен для выполнения именно того, что было описано выше.

0 голосов
/ 04 января 2017

Вы также можете попробовать CasperJS с PhantomJS в Node.JS.

...