写点什么

雅虎开源语义数据 Web 爬虫:Anthelion

  • 2015-12-25
  • 本文字数:1096 字

    阅读完需:约 4 分钟

整个 Web 世界正在发生剧烈的转变,包含语义注解的 Web 页面让数据的提取和重用变得越来越容易,而为了提供更好的用户体验搜索引擎和社交媒体网站对这种数据的使用也越来越多。要获取这些数据离不开网络爬虫的支持,为此,Yahoo 创建了 Anthelion 项目,一个旨在爬取语义数据的 Nutch 插件,最近,该项目已在 GitHub 上开源

Anthelion 是为了更好地爬取嵌在 HTML 页面中的结构化数据而设计的,它采用了一种全新的方法来爬取含有丰富数据的页面上的内容:将线上学习和 Bandit 探索方法有效地结合起来,根据页面上下文以及从之前页面提取到的元数据反馈预测 Web 页面的数据丰富程度。 这种方法明显优于主题爬取(Focused Crawling)目前所采用的其他技术,极大地提升了爬取效率。

整个数据爬取的流程如下:

正如上面的流程图所展示的,为了执行主题爬取,该插件实现了三个扩展:

  1. AnthelionScoringFilter(实现了 ScoringFilter 接口):在线分类器,它对每一个外链打分,同时将新发现的外链分为相关的和不相关的两类。
  2. WdcParser(实现了 Parser 接口):解析 Web 页面内容并提取语义数据。该扩展基于 any23 类库实现,能够从 HTML 中提取 Microdata、Microformats 和 RDFa 注解。
  3. TripleExtractor(实现了 IndexingFilter 接口):将新域存储到索引中供之后的查询使用。

对于想亲身感受 Anthelion 的用户而言,直接从GitHub 上下载整个项目包或许是一个不错的选择,因为它包含了完整的Nutch 1.6 代码和相关插件,不需要任何修改和设置就能运行。如果只想下载插件,那么需要从文件的根目录下下载 nutch-anth.zip 并进行相关的设置。

在构建好项目之后,导航到\target 文件夹,执行 CCFakeCrawler 类的 main 函数就能启动爬虫,例如:

java -Xmx15G -cp ant.jar com.yahoo.research.robme.anthelion.simulation.CCFakeCrawler [indexfile] [networkfile] [labelfile] [propertiesfile] [resultlogfile]其中,indexfile 是 ID 和 URL 之间的映射文件,networkfile 是索引中 ID 的图,labelfile 是满足目标函数的 ID 列表,propertiesfile 是配置文件,resultlogfile 存储性能和爬取流程信息。

Anthelion 支持 init、start、stop 和 exit 操作,在爬取的过程中,用户还可以通过 status 命令查看爬取进程的状态。另外,对于 Anthelion 爬取数据的精确度 Yahoo 也进行了评测,结果如下:


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-25 18:004332
用户头像

发布了 321 篇内容, 共 119.6 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

Go语言入门11—接口

良猿

Go golang 后端 11月月更

以开发之名|线上家装新美学——梦想之家,由你来定

HarmonyOS SDK

AR HMS Core

使用Vmware创建Centos7虚拟机(安装和配置网络环境、xshell连接、防火墙、yum仓库、磁盘挂载、重启命令)

A-刘晨阳

Linux 运维 vmware 11月月更

云渲染是CG的最后一道工序,四个特性让你的渲染更高效

Finovy Cloud

云渲染 云渲染农场

FFmpeg-ffplay播放器分析(1).md

Changing Lin

音视频 ffmpeg 安卓

TOGAF企业架构框架4-内容框架

Marvin Ma

架构 TOGAF 企业架构框架 内容框架

Java | IO流介绍

陌上

Java 编程 11月月更

BNBDao三三复制公排dapp系统开发

开发微hkkf5566

如何构建并提高自己的核心竞争力?

老张

核心竞争力

软件测试面试真题 | 讲讲 OSI 七层模型,每层模型具体干嘛的?

测试人

JavaScript刷LeetCode拿offer-双指针技巧

Geek_07a724

JavaScript LeetCode

Nginx配置中root和alias分不清?本文3分钟帮你解惑!

wljslmz

nginx 服务器 root 11月月更 alias

物联网数据分析(上篇)——业务系统架构类

阿里云AIoT

阿里云 数据分析 物联网 业务架构 数据存储

透过关键基础设施安全事件谈SBOM

安势信息

Gartner SCA 软件物料清单 SBOM 清源CleanSource SCA

前端工程师leetcode算法面试必备-二分搜索算法(下)

js2030code

JavaScript LeetCode

云原生生态 我们选择了哪些

Rayzh

Docker Kubernetes, 云原生, eBPF

基于 Grafana LGTM 可观测性平台的快速构建

Grafana 爱好者

可观测性 Observability

TOGAF架构框架3-ADM架构开发技术

Marvin Ma

架构 TOGAF ADM架构开发方法

前端工程师leetcode算法面试必备-二分搜索算法(中)

js2030code

JavaScript LeetCode

Vue基础知识整理【建议收藏】

何极光

Vue 基础

如何写成高性能的代码(三):巧用稀疏矩阵节省内存占用

葡萄城技术团队

前端 稀疏矩阵

融云通信云服务,助力医疗招聘平台构建行业护城河

融云 RongCloud

通信 医疗 融云

JavaScript刷LeetCode拿offer-滑动窗口

Geek_07a724

JavaScript LeetCode

Linux常用基础命令(巨全)

A-刘晨阳

Linux 运维 11月月更 基础命令

JavaScript刷LeetCode拿offer-双指针技巧Medium篇

Geek_07a724

JavaScript LeetCode

前端工程师leetcode算法面试必备-二分搜索算法(上)

js2030code

JavaScript LeetCode

Baklib经验分享 | 一些搭建帮助中心的攻略

Baklib

帮助中心

一个非常常见的问题:var、let和const

肥晨

11月月更 js6 js基础

云栖大会,一场边缘云计算的「超前瞻」之约

阿里云CloudImagine

云栖大会 边缘云

Baklib知识分享|企业知识管理难,该如何解决?

Baklib

真正的高效能RPC框架Focus

dinstone

json RPC 高性能 protobuf 跨语言

雅虎开源语义数据Web爬虫:Anthelion_语言 & 开发_孙镜涛_InfoQ精选文章