我正在尝试创建一个不断抓取网页的网络抓取工具,寻找包含特定关键字的网页。有许多开源解决方案(Nutch,Scrapy等),但我需要一个可以优先考虑“丰富”资源的智能解决方案。
我希望机器人从某个页面开始,比如说。 http://www.dmoz.org,提取所有链接并继续抓取它们。现在,如果页面包含某个关键字,f.e。 'foo',它应该将此URL发送到数据库。
现在,困难的部分来了。如果我创建并运行这样的机器人,蜘蛛会发现包含指定关键字的新页面需要很长时间,因为它会抓取整个网络。如果蜘蛛可以识别它经常找到关键字的域名,那么这个过程将会大大加快,因此可以更频繁地抓取这些关键字。
是否有针对此的开源解决方案?
到目前为止,我看过Nutch和Scrapy。 Nutch看起来是我需要的最佳选择,但我没有任何Java经验,我找不到任何关于这个问题的具体文档。
答案 0 :(得分:1)
还没有尝试过这个,但我认为你可以通过控制你如何评分外链来在Nutch中做到这一点。如果您当前的网页包含关键字,则可以为该网页的外链提供更高的分数。
http://sujitpal.blogspot.in/2012/01/nutchgora-scoring-and-indexing-plugins.html
中提供了扩展ScoringFilter的插件实现答案 1 :(得分:1)
如果您愿意使用基于Java的解决方案,您可能需要查看Infant。婴儿是一个微网络爬行库。它不是一个开源项目,但完全免费,即使是商业用途。您应该能够为Infant编写自己的插件,以控制婴儿维护其URL队列的顺序。
答案 2 :(得分:0)
如果您仍在寻找类似的东西,可以使用我们非常相似的开源软件
它适用于基于上下文的规则引擎,您可以在其中为任意关键字或文本指定从0到9的单个值作为权重,并且当它将解析它时,将让您抓取您想要的内容
它基于ROR
MYSQL,MONGO和Ubuntu 14.04以及您可以自行管理的其他常规宝石,