一个替代Nutch的网络爬虫

20

我正在尝试构建一个专门的搜索引擎网站,该网站索引了有限数量的网站。 我想到的解决方案是:

  • 使用Nutch作为网络爬虫,
  • 使用Solr作为搜索引擎,
  • 前端和站点逻辑使用Wicket编写。

问题在于,我发现Nutch相当复杂,而且它是一款大型软件,很难进行定制,尽管详细的文档(书籍,最新教程等)并不存在。

现在的问题是:

  1. 对于该网站的整体想法有何建设性的批评?
  2. 是否有比Nutch更好但又简单的替代品(作为网站中的爬取部分)?

谢谢


7
多年来,我们尝试了各种方式:Nutch、Heritrix、Storm Crawler、crawler4j、我们自己的内部爬虫......然而,只有一个真正令我们整个团队印象深刻的替代方案:Mixnode。 - Josh Penn
5个回答

4

Scrapy 是一个用 Python 编写的用于爬取网站的库。相比 Nutch,它规模较小且专为有限制的网站爬取而设计。其采用类似 Django 的 MVC 模式,我发现很容易进行自定义。


4
这取决于你需要爬取多少个网站和链接。Apache Nutch将页面文档存储在Apache HBase上(依赖于Apache Hadoop),它很稳定但非常难以设置和管理。
由于爬虫只是一个页面获取器(如CURL)并检索链接列表以提供给您的URL数据库,我相信您可以自己编写爬虫(特别是如果您只有几个网站),使用一个简单的MySQL数据库(也许是RabbitMQ等队列软件来调度爬行作业)。
另一方面,爬虫可能更加复杂,您可能希望从HTML文档中删除HEAD部分,并仅保留页面的真正“内容”等。
此外,Nutch可以对您的页面进行排名,使用PageRank算法,您可以使用Apache Spark做同样的事情(更高效,因为Spark可以在内存中缓存数据)。

4

对于爬取部分,我非常喜欢使用anemonecrawler4j。它们都允许您添加自定义逻辑以进行链接选择和页面处理。对于您决定保留的每个页面,您可以轻松地调用Solr。


2

在C#中,但是更简单,您可以直接与作者(即我)进行通信。

我曾经使用过Nutch,你说得对;它很难处理。

http://arachnode.net


我尝试过了,它并不更简单。 - BMaximus

0

我相信Nutch是你的应用程序的最佳选择,但如果你想要,还有一个简单的工具:Heritrix。 此外,我建议使用js作为前端语言,因为solr返回的json可以很容易地被js处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接