1

我正在尝试创建一个网络爬虫,它会不断地爬网寻找包含某些关键字的网页。有很多开源解决方案(Nutch、Scrapy 等),但我需要一个可以优先考虑“丰富”资源的智能解决方案。

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

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

有没有为此的开源解决方案?

到目前为止,我已经看过 Nutch 和 Scrapy。Nutch 看起来是满足我需要的最佳选择,但我对 Java 没有任何经验,也找不到有关此问题的任何特定文档。

4

3 回答 3

1

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

http://sujitpal.blogspot.in/2012/01/nutchgora-scoring-and-indexing-plugins.html中给出了扩展 ScoringFilter 的插件的实现

于 2012-11-28T07:04:32.137 回答
1

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

于 2013-01-05T07:46:10.527 回答
0

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

Github 链接

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

它基于 ROR

MYSQL、MONGO 和 Ubuntu 14.04 以及您可以自己管理的其他常规 gem,

于 2015-02-08T12:12:49.047 回答