可以根据关键字确定来源优先级的智能抓取工具?

时间:2012-11-06 16:23:53

标签: scrapy web-crawler nutch

我正在尝试创建一个不断抓取网页的网络抓取工具,寻找包含特定关键字的网页。有许多开源解决方案(Nutch,Scrapy等),但我需要一个可以优先考虑“丰富”资源的智能解决方案。

我希望机器人从某个页面开始,比如说。 http://www.dmoz.org,提取所有链接并继续抓取它们。现在,如果页面包含某个关键字,f.e。 'foo',它应该将此URL发送到数据库。

现在,困难的部分来了。如果我创建并运行这样的机器人,蜘蛛会发现包含指定关键字的新页面需要很长时间,因为它会抓取整个网络。如果蜘蛛可以识别它经常找到关键字的域名,那么这个过程将会大大加快,因此可以更频繁地抓取这些关键字。

是否有针对此的开源解决方案?

到目前为止,我看过Nutch和Scrapy。 Nutch看起来是我需要的最佳选择,但我没有任何Java经验,我找不到任何关于这个问题的具体文档。

3 个答案:

答案 0 :(得分:1)

还没有尝试过这个,但我认为你可以通过控制你如何评分外链来在Nutch中做到这一点。如果您当前的网页包含关键字,则可以为该网页的外链提供更高的分数。

http://sujitpal.blogspot.in/2012/01/nutchgora-scoring-and-indexing-plugins.html

中提供了扩展ScoringFilter的插件实现

答案 1 :(得分:1)

如果您愿意使用基于Java的解决方案,您可能需要查看Infant。婴儿是一个微网络爬行库。它不是一个开源项目,但完全免费,即使是商业用途。您应该能够为Infant编写自己的插件,以控制婴儿维护其URL队列的顺序。

答案 2 :(得分:0)

如果您仍在寻找类似的东西,可以使用我们非常相似的开源软件

Github Link

它适用于基于上下文的规则引擎,您可以在其中为任意关键字或文本指定从0到9的单个值作为权重,并且当它将解析它时,将让您抓取您想要的内容

它基于ROR

MYSQL,MONGO和Ubuntu 14.04以及您可以自行管理的其他常规宝石,