java网络爬虫框架:Webmagic学习总结

网络爬虫常用的技术(Java)

    底层实现Jsoup+HttpClient 开源框架Webmagic

Webmagic是一个开源的爬虫框架,用于简化爬虫的开发流程,使开发者更专注与业务逻辑的开发. 主要特色: 完全模块化的设计,强大的扩展性. 核心简单但是涵盖爬虫的全部流程,灵活而强大 提供丰富的抽取页面API 无配置,但是可通过POJO+注解形式实现一个爬虫 支持多线程 支持分布式 支持爬虫js动态渲染页面 无框架依赖,可以灵活的嵌入到项目中

架构解析

WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组 件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管 理和持久化等功能。而Spider则将这几个组件组织起来,让它们可以互相交互,流程化的 执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

四大组件

Downloader Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了 ApacheHttpClient作为下载工具。 PageProcessor PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup 作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。 在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部 分。 Scheduler Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内 存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。 Pipeline Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供 了“输出到控制台”和“保存到文件”两种结果处理方案。

所需依赖:

<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic‐core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic‐extension</artifactId>
<version>0.7.3</version>
</dependency>

指定内容爬取

xpath: XML路径语言,是一种确定XML文档中某部分位置的语言.使用路径表达式(正则表达式)来选取XML文档中的节点或者节点集

各组件对应常用API

Spider是爬虫启动的入口。在启动爬虫之前,我们需要使用一个PageProcessor创建 一个Spider对象,然后使用run()进行启动。 ** 同时Spider的其他组件(Downloader、Scheduler、Pipeline)都可以通过set方法来 进行设置。 Page代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者 其他文本格式的内容。Page是WebMagic抽取过程的核心对象,它提供一些方法可供抽 取、结果保存等。 Site用于定义站点本身的一些配置信息,例如编码、HTTP头、超时时间、重试策略 等、代理等,都可以通过设置Site对象来进行配置。 Scheduler实现方式: 内存队列 QueueScheduler 文件队列 FileCacheQueueScheduler Redis队列 RedisScheduler 用于去重保证爬取的数据不重复

经验分享 程序员 微信小程序 职场和发展