java - 对于有关构建搜索引擎的学术项目,什么是基于 Java 的优秀爬虫?

标签 java multithreading web-crawler nutch heritrix

好的,所以我最近两天一直在寻找适合我需求的爬虫。我想建立一个搜索引擎,我想自己做索引。这将是一个学术项目的一部分。虽然我没有抓取整个网络的处理能力,但我想使用一个实际上有能力做到这一点的抓取工具。所以我正在寻找的是一个爬虫:

  1. 支持多线程
  2. 不错过很多链接
  3. 让我有机会(重写一个方法,这样我就可以)访问已抓取页面的内容,以便我可以保存、解析它等。
  4. 服从 robots.txt 文件
  5. 抓取 html 页面(还有 php、jsp 等)。
  6. 识别具有相同内容的页面并只返回一个。

它不需要(必须)做的是:

  1. 支持网页排名。
  2. 索引结果。
  3. 抓取图片/音频/视频/pdf等

我发现了一些非常接近我的需求的库/项目,但据我所知它们并不支持我需要的一切:

  1. 首先我遇到了crawler4j .这个唯一的问题是它不支持每个主机的礼貌间隔。因此,通过将礼貌级别设置为 1000 毫秒这样一个合适的值,会使爬虫非常慢。
  2. 我还找到了flaxcrawler .这确实支持多线程,但在查找和跟踪网页中的链接时似乎有问题。

我还研究了更完整、更复杂的“爬虫”,例如 Heritrix 和 Nutch。虽然我不太擅长处理更复杂的东西,但如果我确定它能够完成我需要它做的事情,我绝对愿意使用它:爬网并给我所有页面,以便我可以阅读他们。

长话短说:我正在寻找一个可以非常快速地遍历网络上所有页面并让我有机会使用它们做一些事情的爬虫。

最佳答案

据我所知,Apache Nutch 可以满足您的大部分要求。 Nutch 也有一个插件架构,如果你需要的话,这有助于编写你自己的插件架构。您可以浏览 wiki [0] 并在邮件列表中提问,如果您有任何问题

[0] http://wiki.apache.org/nutch/FrontPage

关于java - 对于有关构建搜索引擎的学术项目,什么是基于 Java 的优秀爬虫?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14603330/

相关文章:

java - 从 OneToMany 集合中删除时出现 EntityNotFoundException

java - 交互式 java 调用很好,但在脚本中同样失败

java - 使用java WebView的谷歌地图API中的奇怪字符

seo - 防止谷歌索引我的分页系统

python - 如何使用 scrapy 在请求上指定参数

.htaccess - 为什么 google 会找到被 robots.txt 排除的页面?

java - Spring Data 中的重构返回 List<Object[]>

c++ - 内存中的静态和全局变量

java - 如果我在多线程服务器程序中运行并行代码会发生什么?

java - notify()之后的锁获取顺序