狸窝网页flash抓取器(Larbin开发语言:Java简介:Apache的子项目开发)

优采云 发布时间: 2022-02-10 16:03

  狸窝网页flash抓取器(Larbin开发语言:Java简介:Apache的子项目开发)

  ******************

  拉尔宾

  开发语言:C++

  larbin 是一个基于 C++ 的网络爬虫工具,具有易于操作的界面,但它只能在 LINUX 下运行。普通PC下,larbin每天可以爬取500万页(当然需要网络好)

  介绍

  Larbin 是一个开源的网络爬虫/网络蜘蛛,由年轻的法国人 Sébastien Ailleret 独立开发。larbin 的目的是能够跟踪页面的 URL 进行扩展爬取,最终为搜索引擎提供广泛的数据源。

  larbin只是一个爬虫,也就是说larbin只爬网页,怎么解析是用户自己做的。此外,larbin 没有提供如何存储到数据库和建立索引。

  Latbin 最初的设计也是基于设计简单但可配置性高的原则,所以我们可以看到一个简单的 larbin 爬虫每天可以抓取 500 万个网页,非常高效。

  特征

  1. larbin 获取单个的所有连接点,当然是 网站,甚至可以镜像一个 网站。

  2. larbin 构建一个url列表组,例如对所有网页进行url retrive后,得到xml链接。或mp3。

  3. 定制后,larbin可以作为搜索引擎的信息来源(例如,2000组爬取的网页可以存储在一系列目录结构中)。

  问题

  Labin 的主要问题是:

  只提供网页保存功能,不做进一步的网页分析;

  不支持分布式系统;

  功能比较简单,提供的配置项还不够;

  不支持网页的自动重访和更新功能;

  2003年底以来,拉宾放弃更新,目前处于荒长草状态

  *********

  纳奇

  开发语言:Java

  介绍:

  Apache的子项目之一,是Lucene项目下的子项目。

  Nutch 是一个基于 Lucene 的完整网络搜索引擎解决方案,类似于 Google。基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse的插件机制保证了系统的可定制性,易于集成到自己的应用程序中。之中。

  一般来说,Nutch 可以分为 2 个部分:爬行部分和搜索部分。爬虫爬取页面并将检索到的数据做成反向索引,搜索程序响应用户的反向索引搜索请求。爬虫和搜索器之间的接口是索引,两者都使用索引中的字段。爬虫程序和搜索程序可以位于不同的机器上。下面详细介绍爬取部分。

  抓取部分:

  履带由 Nutch 的履带驱动。这是一组用于构建和维护几种不同数据结构的工具:Web 数据库、一组段和索引。下面一一解释这三种不同的数据结构:

  1、Web 数据库或 WebDB。这是一种特殊的存储数据结构,用于映射被抓取数据的结构和属性集合网站。WebDB 用于存储从开始爬取(包括重新爬取)开始的所有 网站 结构化数据和属性。WebDB 仅供爬虫使用,搜索者不使用。WebDB 存储 2 种实体:页面和链接。页面代表网络上的一个网页,以网页的URL为指标进行索引,同时建立网页内容的MD5哈希签名。与页面相关的其他内容也被存储,包括:页面中的链接数(出站链接)、页面爬取信息(在页面被重复爬取的情况下)、代表页面级别的分数。链接表示从一个网页到其他网页的链接。所以WebDB可以说是一个网络图,节点是页面,链接是边。

  2、段 . 这是网页的集合,并已编入索引。Segment的Fetchlist是爬虫使用的url列表,由WebDB生成。Fetcher 的输出数据是从 fetchlist 中获取的网页。Fetcher 的输出数据先进行反向索引,然后将索引结果存储到段中。一个segment的生命周期是有限的,下一轮抓取开始后就没用了。默认重新抓取间隔为 30 天。因此,可以删除超过此时间限制的段。它还可以节省大量磁盘空间。段以日期和时间命名,因此可以非常直观地看到它们的生命周期。

  3、索引。索引库是系统中所有被爬取页面的反向索引。它不是直接从页面的反向索引生成的,而是通过组合许多小段的索引生成的。Nutch 使用 Lucene 进行索引,因此所有 Lucene 相关的工具 API 都用于构建索引库。需要注意的是,Lucene的段的概念和Nutch的完全不同,所以不要混淆。简而言之,Lucene 的段是 Lucene 的索引库的一部分,而 Nutch 的段是被爬取和索引的 WebDB 的一部分。

  爬取过程详解:

  爬取是一个循环过程:爬虫从WebDB生成一个fetchlist集合;提取工具根据fetchlist从互联网下载网页内容;工具程序根据提取工具找到的新链接更新WebDB;然后生成一个新的 fetchlist;一周一周。这个 fetch 循环在 nutch 中通常被称为:generate/fetch/update 循环。

  一般来说,同域名下的url链接会被合成到同一个fetchlist中。这样做的原因是当使用多个工具同时抓取时,不会出现重复抓取的情况。Nutch 遵循机器人排除协议,并且可以使用 robots.txt 定义来保护私人网络数据不被捕获。

  以上抓具组合是Nutch的最外层。也可以直接使用低级工具,结合这些低级工具的执行顺序,达到同样的效果。这就是 Nutch 吸引人的地方。下面详细介绍上述过程,括号中是底层工具的名称:

  1、创建一个新的 WebDB (admin db -create)。

  2、注入 URL 以开始爬入 WebDb(注入)。

  3、从 WebDb 中的新段生成 fetchlist(生成)。

  4、根据fetchlist列表获取网页内容(fetch)。

  5、根据检索到的网页链接url更新WebDB(updatedb)。

  6、重复以上3-5个步骤,直到达到指定的抓取层数。

  7、使用计算出的网页 url 权重分数更新分段 (updatesegs)。

  8、创建爬取网页的索引。

  9、 消除索引中的重复内容和重复 url (dedup)。

  10、将多个索引合并为一个大索引,提供一个索引库(合并)供搜索。

  ******************

  赫里特里克斯

  开发语言:Java

  Heritrix 是一个开源、可扩展的网络爬虫项目。Heritrix 的设计严​​格遵循 robots.txt 文件的排除说明和 META robots 标签。

  介绍

  Heritrix 和 Nutch 的比较

<p>和纳奇。两者都是Java开源框架,Heritrix是SourceForge上的开源产品,Nutch是Apache的子项目。它们都被称为网络爬虫/爬虫(Web Crawler),它们的实现原理基本相同:深度遍历网站资源,将这些资源抓取到本地,使用的方法是分析

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线