网络爬虫常用的技术(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
用于去重保证爬取的数据不重复

更多推荐

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