整个Web世界正在发生剧烈的转变,包含语义注解的Web页面让数据的提取和重用变得越来越容易,而为了提供更好的用户体验搜索引擎和社交媒体网站对这种数据的使用也越来越多。要获取这些数据离不开网络爬虫的支持,为此,Yahoo创建了Anthelion项目,一个旨在爬取语义数据的Nutch插件,最近,该项目已在GitHub上开源。
Anthelion是为了更好地爬取嵌在HTML页面中的结构化数据而设计的,它采用了一种全新的方法来爬取含有丰富数据的页面上的内容:将线上学习和Bandit探索方法有效地结合起来,根据页面上下文以及从之前页面提取到的元数据反馈预测Web页面的数据丰富程度。 这种方法明显优于主题爬取(Focused Crawling)目前所采用的其他技术,极大地提升了爬取效率。
整个数据爬取的流程如下:
正如上面的流程图所展示的,为了执行主题爬取,该插件实现了三个扩展:
- AnthelionScoringFilter(实现了ScoringFilter接口):在线分类器,它对每一个外链打分,同时将新发现的外链分为相关的和不相关的两类。
- WdcParser(实现了Parser接口):解析Web页面内容并提取语义数据。该扩展基于any23类库实现,能够从HTML中提取Microdata、Microformats和RDFa注解。
- 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也进行了评测,结果如下: