WebMagic in Action

       最近,公司地产项目需求要爬取房地产相关网站数据,之前一直在用WebHarvest+EJB+JPA框架+glassfish服务器进行数据的爬取,但是随着数据源的增多,项目所占资源庞大,效率逐步的降低,想换个爬虫框架,所以小编在Git上找了一下java相关的爬虫框架,最后选定了WebMagic,主要是因为此框架内置多线程机制并且可以管理内核的占用率,并且可以使用xpath进行页面元素抽取的垂直类型爬虫,花时间着手研究了一下,写个Demo分享给大家。

        1.一个框架,一个领域

一个好的框架必然凝聚了领域知识。WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。

如果你是爬虫开发老手,那么WebMagic会非常容易上手,它几乎使用Java原生的开发方式,只不过提供了一些模块化的约束,封装一些繁琐的操作,并且提供了一些便捷的功能。

如果你是爬虫开发新手,那么使用并了解WebMagic会让你了解爬虫开发的常用模式、工具链、以及一些问题的处理方式。熟练使用之后,相信自己从头开发一个爬虫也不是什么难事。

2.微内核和高可扩展性

WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成,核心代码非常简单,主要是将这些组件结合并完成多线程的任务。这意味着,在WebMagic中,你基本上可以对爬虫的功能做任何定制。

WebMagic的核心在webmagic-core包中,其他的包你可以理解为对WebMagic的一个扩展——这和作为用户编写一个扩展是没有什么区别的。

 3.注重实用性

虽然核心需要足够简单,但是WebMagic也以扩展的方式,实现了很多可以帮助开发的便捷功能。例如基于注解模式的爬虫开发,以及扩展了XPath语法的Xsoup等。这些功能在WebMagic中是可选的,它们的开发目标,就是让使用者开发爬虫尽可能的简单,尽可能的易维护。

 4.垂直类型爬虫

垂直类型的爬虫要解决的问题则不一样,比如想要爬取一些网站的新闻、博客信息,一般抓取数量要求不是很大,难点则在于如何高效的定制一个爬虫,可以精确的抽取出网页的内容,并保存成结构化的数据。这方面需求很多,webmagic就是为了解决这个目的而开发的。

   项目的实施:

WebMagic基于Maven进行构建,Maven不熟的同学可以去看看官网的介绍,由于小编是要将项目部署在阿里云服务器供数据组发请求抓数据,所以构建的项目是基于Maven的web项目,以及Mybatis+spring框架来进行数据的存储管理,替换了之前的框架和服务器,接下来直接上核心代码给大家分析各模块的作用:

WebMagic in Action_第1张图片

Spider是爬虫启动的入口。在启动爬虫之前,我们需要使用一个PageProcessor创建一个Spider对象,然后使用run()进行启动。同时Spider的其他组件(Downloader、Scheduler、Pipeline)都可以通过set方法来进行设置。

WebMagic in Action_第2张图片

此类是用Xpath解析页面元素取到我们需要的数据,不了解xpath可以去http://www.w3school.com.cn/官方文档学习。

WebMagic in Action_第3张图片

pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

除此之外就是Mybatis的配置这里不再过多介绍,此web爬虫Demo核心代码就算做完了,大家还在等什么,快动手自己亲自体验下吧。


你可能感兴趣的:(爬虫系列)