WebMagic介绍

来自CloudWiki
跳转至: 导航搜索

WebMagic架构图

WebMagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。其架构流程如图3-1所示。

Bg1-100.jpg

3-1 WebMagic架构图

各部分作用

Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。在这4个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。

Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。Pipeline定义了结果保存的方式,如果要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。

项目中的包

WebMagic项目里还有几个包,这些都是一些实验性的功能,目的只是提供一些与外围工具整合的样例。

(1) webmagic-samples

webmagic-samples包含早期编写的一些爬虫的例子。这些例子有些使用的仍然是老版本的API。

最新的、精选过的例子,请看webmaigc-core的us.codecraft.webmagic.processor.ex -ample包和webmaigc-core的us.codecraft.webmagic.example包。

(2) webmagic-scripts

它是WebMagic对于爬虫规则脚本化的一些尝试,目标是让开发者脱离Java语言,来进行简单、快速的开发。同时强调脚本的共享。对脚本化感兴趣的可以参考webmagic-scripts简单文档。

(3)webmagic-selenium

它是WebMagic与Selenium结合的模块。Selenium是一个模拟浏览器进行页面渲染的工具,WebMagic依赖Selenium进行动态页面的抓取。

(4)webmagic-saxon

它是WebMagic与Saxon结合的模块。Saxon是一个XPath、XSLT的解析工具,WebMagic依赖Saxon来进行XPath 2.0语法解析支持。

(5) webmagic-avalon

webmagic-avalon是一个特殊的项目,它是基于WebMagic实现的一个产品化工具,涵盖爬虫的创建、管理等后台工具。Avalon是亚瑟王传说中的“理想之岛”,webmagic-avalon的目标是提供一个通用的爬虫产品。

实施思路

  1. 爬取岗位列表页:每个岗位的名称和链接地址
  2. 爬取岗位信息页

如果Eclipse原先的版本过低,导致项目不通过,可以用这个方法修改:

修改jdk: 
     window ->preferences -> java -> installed JRE  把旧有的JRE去除,添加上新的
     点击项目名称 ,右击,选择Property 在窗口中搜索 facet即可,将java版本改成刚刚添加的那个版本

另外,由于网站自身的变更,需要把代码中http 改成https