java爬虫抓取动态网页(WebMagic项目代码分为核心和扩展两部分(webmagic-core))
优采云 发布时间: 2022-03-26 14:20java爬虫抓取动态网页(WebMagic项目代码分为核心和扩展两部分(webmagic-core))
一、简介
webmagic是一个爬虫框架,无需配置,方便二次开发。它提供了简单灵活的API,只需少量代码即可实现爬虫。webmagic采用完全模块化设计,功能覆盖爬虫全生命周期(链接提取、页面下载、内容提取、持久化),支持多线程爬取、分布式爬取,并支持自动重试、自定义UA/等功能饼干。
二、概览
WebMagic 项目代码分为核心和扩展两部分。核心部分(webmagic-core)是一个简化的、模块化的爬虫实现,而扩展部分收录了一些方便实用的功能(比如用注解方式编写爬虫等)。
WebMagic 的结构分为四个组件:Downloader、PageProcessor、Scheduler 和 Pipeline,Spider 将它们相互组织起来。这四个组件分别对应了爬虫生命周期中的下载、处理、管理和持久化的功能。Spider 组织这些组件,以便它们可以相互交互并处理执行。可以认为Spider是一个大容器,也是WebMagic逻辑的核心。
WebMagic的整体架构图如下:
2.1 WebMagic 的四个组成部分
2.2 数据流对象
2.3 控制爬虫的引擎——Spider
Spider 是 WebMagic 内部流程的核心。Downloader、PageProcessor、Scheduler 和 Pipeline 都是 Spider 的属性。这些属性可以自由设置,通过设置该属性可以实现不同的功能。Spider也是WebMagic操作的入口,封装了爬虫创建、启动、停止、多线程等功能。
对于编写爬虫来说,PageProcessor是需要编写的部分,Spider是创建和控制爬虫的入口。
2.4 WebMagic 项目构成
WebMagic 项目代码由几个部分组成,在根目录中由不同的目录名称分隔。它们都是独立的 Maven 项目。
WebMagic 主要包括两个已经被广泛使用和成熟的包:
三、基本爬虫3.1 爬虫流程(参考上面的框架图)
下载器-页面下载
PageProcessor-页面分析和链接提取
Webmagic 的选择器
调度程序-URL 管理
管道 - 离线处理和持久化
3.2 使用 WebMagic 抓取壁纸网站
首先介绍WebMagic的依赖,webmagic-core-{version}.jar和webmagic-extension-{version}.jar。在项目中添加这两个包的依赖即可使用WebMagic。
将依赖jar包引入maven
不使用maven的用户可以去下载最新的jar包。
3.3 爬虫的实现实现PageProcessor接口
爬虫配置
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000).setTimeOut(3000);
编写爬虫代码
<p>package photo;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;
import java.io.FileNotFoundException;
import java.io.IOException;
public class GetPhoto implements PageProcessor {
// 设置参数
private Site site = Site.me().setRetryTimes(3).setSleepTime(1000).setTimeOut(3000);
/**
* 主方法启动爬虫
*/
public static void main(String[] args) {
// 这里只爬取第一页的壁纸,如果要爬取其他页数修改for循环参数即可
for (int i = 1; i