写点什么

雅虎开源语义数据 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:004826
用户头像

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

关注

评论

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

架构师训练营 - 第 8周命题作业

红了哟

阿里P8忠告:这些技术,哪怕不用微服务架构,你也应该会

小Q

Docker 架构 微服务 springboot SpringCloud

没想到 Hash 冲突还能这么玩,你的服务中招了吗?

老大哥

Java 程序员 后端

“新基建”与“双循环”的二重奏:2020服贸会靠什么推动经济复苏

脑极体

从用户输入手机验证码开始

架构师修行之路

用技术的“信条”,开启AI to B的产业位移

脑极体

架构师第十三周作业

傻傻的帅

架构师

我的大厂面试经历

老大哥

Java 程序员 后端

架构师训练营第十三周作业

张明森

为什么一个还没毕业的大学生能够把 IO 讲的这么好?

苹果看辽宁体育

Java 后端 io

【真实面试经历】我和阿里面试官的一次“邂逅”

老大哥

面试官为什么会问你,如何设计一个高并发系统?

老大哥

Java 程序员 后端

关于二进制的补码,反码,正负数表示以及Java代码测试

Zexho

Java 补码 位运算 反码 计算机知识

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

简爱W

Java 程序员 java架构

架构师训练营作业(大数据与机器学习)

qihuajun

Flink通过官网创建自己的工程-20

小知识点

scala 大数据 flink

「查缺补漏」巩固你的RocketMQ知识体系

Kerwin

Java RocketMQ

工作好多年有可能还未真正了解接口和抽象类

架构师修行之路

接口 抽象

商业通识 : 商业从哪里来?

Walker

学习 得到 个人成长 商业

第13周 作业

Jaye

What's new in Dubbo-go v1.5.1

apache/dubbo-go

dubbo 服务端 Go 语言

Hessian Bug修复

心平气和

php 序列化 hessian

Java服务,内存OOM问题如何快速定位?

老大哥

Java 程序员 后端

服务化反面案例

心平气和

服务化 权限

市值做市机器人,操盘做市系统搭建

大厂面试题:集群部署时的分布式 session 如何实现? 面试官心理分析

老大哥

Java 程序员 后端

第十三周作业

olderwei

极客大学架构师训练营

Java架构师JVM启动流程和内存结构,程序员必看!

老大哥

Java 程序员 后端

架构师训练营第13周作业

架构师训练营第 0 期第 13 周作业

无名氏

Spring 5 中文解析核心篇-集成测试之TestContext(上)

青年IT男

单元测试 Spring5 JUnit

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