python html5 bootstrap 视频教程
德云社区 门户 行业资讯 行业标准 智控标准 查看内容

Nutch & Anthelion ── 基于 Apache 许可协议的开源 Java 语言爬虫 ...

2016-1-30 23:18| 发布者: digitser| 查看: 2321| 评论: 0|原作者: digits

摘要: Nutch Anthelion ── 基于 Apache 许可协议的开源 Java 语言爬虫 Nutch Nutch 是基于开源 Java 语言实现的搜索引擎,在 Apache 许可下发行。Nutch 提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和 ...
自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
Nutch & Anthelion ── 基于 Apache 许可协议的开源 Java 语言爬虫

Nutch

Nutch 是基于开源 Java 语言实现的搜索引擎,在 Apache 许可下发行。Nutch 提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和 Web 爬虫。


Nutch 是基于 Lucene 的,Lucene 为 Nutch 提供文本索引和全文搜索 API。

01、若不需要抓取数据,应使用 Lucene。若有数据源,需为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据,并用 Lucene API  建立索引。


02、若没有本地数据源,或数据源非常分散,应使用 Nutch。


Nutch 创始人是 Doug Cutting,他同时也是 Lucene、Hadoop 和 Avro 开源项目的创始人。


Nutch 诞生于 2002 年 8 月,是 Apache 旗下的一个用 Java 实现的开源搜索引擎项目,自 Nutch 1.2 版之后,Nutch 已从搜索引擎演化为网络爬虫,接着 Nutch 进一步演化为两大分支版本:1.X 和 2.X。这两大分支的最大区别,在于 2.X 对底层数据的存储进行了抽象,以支持各种底层存储技术。


在 Nutch 的进化过程中,产生了 Hadoop、Tika、Gora 和 Crawler Commons 四个 Java 开源项目。如今,这 4 个项目都发展迅速,极其火爆,尤其是 Hadoop,其已成为大数据处理的事实标准。Tika 使用多种现有的开源内容解析项目,来实现从多种格式的文件中提取元数据和结构化文本。Gora 支持把大数据持久化到多种存储实现。Crawler Commons 是一个通用的网络爬虫组件。


Nutch 致力于让每个人能很容易,同时花费很少,就可配置世界一流的 Web 搜索引擎。为完成这一宏伟目标, Nutch 必须能够做到:

01、每月抓取几十亿网页


02、为这些网页维护索引


03、对索引文件进行每秒上千次的搜索


04、提供高质量的搜索结果


05、以最小的成本运作


Nutch 由爬虫 crawler 和查询 searcher 组成。Crawler 主要用于从网络上抓取网页并为这些网页建立索引。Searcher 主要利用这些索引,检索用户的查找关键词来产生查找结果。两者之间的接口为索引,所以除去索引部分,两者之间的耦合度很低。


Crawler 和 Searcher 两部分尽量分开的目的,主要是为使 2 部分可分布式配置在不同硬件平台上;譬如:将 Crawler 和 Searcher 分别放在 2 个主机上,这样可提升性能。


Crawler 工作原理:

首先 Crawler 根据 WebDB 生成一个待抓取网页的 URL 集合叫做 Fetchlist,接着下载线程 Fetcher。根据 Fetchlist 将网页抓取回来,如果下载线程有很多个,那么就生成很多个 Fetchlist,也就是一个 Fetcher 对应一个 Fetchlist。然后 Crawler 用抓取回来的网页更新 WebDB,根据更新后的 WebDB 生成新的 Fetchlist,里面是未抓取的或新发现的 URLs。下一轮抓取循环重新开始。这个循环过程可以叫做 “产生/抓取/更新” 循环。


指向同一主机的 Web 资源 URLs,通常被分配到同一 Fetchlist 中,这可防止过多的 Fetchers 对一主机,同时进行抓取造成主机负担过重。另外,Nutch 遵守 Robots Exclusion Protocol,网站可通过自定义 Robots.txt 控制 Crawler 的抓取。


01、创建一个新 WebDb (admin db -create)


02、将抓取起始 URLs 写入 WebDB 中 (inject)


03、根据 WebDB 生成 fetchlist 并写入相应的 segment (generate)


04、根据 fetchlist 中的 URL 抓取网页 (fetch)


05、根据抓取网页更新 WebDb (updatedb)


06、循环 3-5 步直至预先设定的抓取深度


07、根据 WebDB 得到的网页评分和 links 更新 segments (updatesegs)


08、对所抓取的网页进行索引 (index)


09、在索引中丢弃有重复内容的网页和重复的 URLs (dedup)


10、将 segments 中的索引进行合并生成用于检索的最终 index (merge)

segment、index、web database


Crawler 重点包括两方面,Crawler 的工作流程和涉及的数据文件的格式和含义。数据文件主要包括三类:web database,一系列的 segment 加上 index。三者的物理文件分别存储在爬行结果目录下的 db 目录下,webdb 子文件夹内,segments 文件夹和 index 文件夹。


01、segment


一次爬行会产生很多个 segment,每个 segment 内存储的是爬虫 Crawler 在单独一次抓取循环中抓到的网页以及这些网页的索引。Crawler 爬行时会根据 WebDB 中的 link 关系按照一定的爬行策略生成每次抓取循环所需的 fetchlist,


然后,Fetcher 通过 fetchlist 中的 URLs 抓取这些网页并索引,然后将其存入 segment。Segment 是有时限的,当这些网页被 Crawler 重新抓取后,先前抓取产生的 segment 就作废了。


在存储中,Segment 文件夹是以产生时间命名的,方便我们删除作废的 segments 以节省存储空间。


02、index


Index 是 Crawler 抓取的所有网页的索引,它是通过对所有单segment 中索引进行合并处理所得。


Nutch 利用 Lucene 技术进行索引,所以,Lucene 中对索引进行操作的接口对 Nutch 中的 index 同样有效。但是需要注意的是,Lucene 中的 segment 和 Nutch 中的不同,Lucene 中的 segment 是索引 index 的一部分,但 Nutch 中的 segment 只是 WebDB 中各个部分网页的内容和索引,最后通过其生成的 index 跟这些 segment 已经毫无关系了。


03、web database


Web database,也叫 WebDB,其中存储的是爬虫所抓取网页之间的链接结构信息,它只在爬虫 Crawler 工作中使用而和 Searcher 的工作没有任何关系。


WebDB 内存储了两种实体的信息:page 和 link。


Page 实体通过描述网络上一个网页的特征信息来表征一实际网页,因为,网页有很多个需要描述,WebDB 中通过网页的 URL 和网页内容的 MD5 两种索引方法对这些网页实体进行了索引。Page 实体描述的网页特征主要包括网页内的 link 数目,抓取此网页的时间等相关抓取信息,对此网页的重要度评分等。


Link 实体描述的是两个 page 实体之间的链接关系。

Anthelion

雅虎 2015 年 12 月 20 日宣布开源 web 爬虫工具 Anthelion,该工具可解析 HTML 页面中的结构化数据。Anthelion 是 Nutch 插件,专注于爬取语义数据。


Anthelion 使用在线学习方法来基于页面上下文预测富数据 Web 页面,从之前查看的页面提取的元数据获取反馈。


Web 爬虫曾是雅虎的核心技术,甚至超过了其他应用: Yahoo Mail、Yahoo Financel、Yahoo Messengerl、Flickr 和 Tumblr,因此,雅虎在这个领域发布开源工具显得不同寻常。此前,雅虎刚宣布将剥离一些核心业务(但不包括阿里巴巴的股份),此外雅虎首席执行官 Marissa Mayer 刚刚生下双胞胎。


2014 年上海信息知识管理会议上,雅虎曾在一篇论文中详细介绍了 Anthelion。该论文的作者指出:“雅虎的爬虫技术开创了业界先河,那就是专注于那些通过 Microdata、Microformats 或 RDFa 等 markup 语言嵌入 HTML 页面的语义数据。


Microdata 和 RDFa 是标记不同结构化数据的句法格式,他们都兼容 Schema.org 的结构化数据词汇库,而 Schema.org 是谷歌、雅虎和 Bing 搜索引擎共同支持的项目。


雅虎研究人员在论文中展示了 Anthelion 爬虫技术的部署,如何提高搜索查询的相关结果数量。Anthelion 源代码现以 Apache 开源授权协议托管到 GitHub https://github.com/yahoo/anthelion,作为 Apache Nutch 开源 web 爬虫项目的一个组件。


雅虎研究人员在 Tumblr 发博文指出,Anthelion 能定向检索特定网页,譬如:那些使用 markup 标记电影名称和演员等至少 2 种属性的网页。

版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。


路过

雷人

握手

鲜花

鸡蛋
AI人工智能 语音助理 人工翻译 教程

相关阅读

最新评论

Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译
Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制[35/2024-10-24]
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制采[24/2024-10-24]
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[24/2024-10-24]
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[21/2024-10-24]
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1592/2022-07-31]
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1723/2022-07-31]
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺 标准对称圆角最常用,但有时偶尔也会用到非对称圆角。 特别是模具、五金、电子、手饰、汽车、家具、玩具、等对圆[1414/2022-05-25]
NumPy 1.22 官方中文文档编制 手册帮助 更新日志
NumPy 1.22 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采用[997/2022-05-22]
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采[1164/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档编[1048/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档[1001/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中文[1619/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中[1480/2022-05-22]

Archiver|Sitemap|小黑屋|德云社区   

GMT+8, 2024-11-23 07:30 , Processed in 0.026310 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

返回顶部