Java爬虫框架WebMagic的介绍及使用(定时任务、代理)

一、概述

1、介绍

WebMagic的底层用到了HttpClientJsoup 能够更方便地开发爬虫
WebMagic项目代码分为核心和扩展两部分
其中:

  • 核心部分(webmagic-core)是一个精简的 模块化的爬虫实现
    而扩展部分则包括一些便利的 实用性的功能
  • 扩展部分(webmagic-extension)提供了一些便捷的功能 例如用注解模式编写爬虫等
    同时内置了一些常用的组件 便于爬虫开发

WebMagic的设计目标是尽量的模块化 并体现爬虫的功能特点
提供了非常简单 灵活的API 可以在基本不改变开发模式的情况下编写一个爬虫

2、结构:

WebMagic的结构分为【Downloader】 【PageProcessor】 【Scheduler】 【Pipeline】四大组件
并由【Spider】将它们彼此组织起来
这四大组件对应了爬虫生命周期中的下载 处理 管理持久化等功能

  • Downloader
    负责从互联网上下载页面以便后续处理
    (默认使用HttpClient作为下载工具)
  • PageProcessor
    负责解析页面 抽取有用的信息 以及发现新的链接
    (使用Jsoup作为HTML解析工具 并基于其开发了解析XPath的工具Xsoup)
  • Scheduler
    负责管理待抓取的URL 以及一些去重的工作
    默认提供了JDK的内存队列来管理URL 并用集合进行去重
    支持使用Redis进行分布式管理
  • Pipeline
    负责抽取结果的处理 包括计算 持久化到文件和数据库
    (默认提供了输出到控制台和保存到文件两种结果处理方案)

示意图:
在这里插入图片描述
Spider将这几个组件组织起来 让它们可以互相交互 流程化的执行
可以认为Spider是一个大的容器 它也是WebMagic逻辑的核心

3、用于数据流转的对象:

★ Request

Request是对URL地址的一层封装
一个Request对应一个URL地址
是PageProcessor与Downloader交互的载体 也是PageProcessor控制Downloader的唯一方式
其有一个额外字段extra
可用于保存一些特殊的属性 然后在其它地方读取 以完成不同的功能 例如附加上页面信息
格式为key-value 键值对

★ Page

Page代表了从Downloader下载到的一个页面(可能是HTML也可能是Json或者其它文本格式的内容)
是WebMagic抽取过程的核心对象 提供了一些方法可供抽取 结果保存等操作

★ ResultItems

ResultItems相当于一个Map 保存了PageProcessor处理的结果 供Pipeline使用
其API与Map很类似
有一个额外字段skip 若设为true的话 则代表不被Pipeline处理

二、使用

1、简单使用

首先 是引入依赖:

<!--Webmagic核心包-->
<dependency>
	<groupId>us.codecraft</groupId>
	<artifactId>webmagic-core</artifactId>
	<version>0.7.3</version>
</dependency>
<!--Webmagic扩展包-->
<dependency>
	<groupId>us.codecraft</groupId>
	<artifactId>webmagic-extension</artifactId>
	<version>0.7.3</version>
</dependency>

:0.7.3版本对SSL的支持并不完全 若直接从Maven中央仓库下载依赖
在爬取只支持SSL v1.2的网站会有SSL的异常抛出

解决方案:使用0.7.4版本 或 直接从github上下载最新代码安装到本地仓库
然后将github下载的webmagic-core放于本地一个目录下
选择从本地导入:
在这里插入图片描述
选择Maven:
在这里插入图片描述
点击该按钮:
在这里插入图片描述
安装:
在这里插入图片描述
然后是添加log4j.properties日志配置文件
(因为WebMagic的内部已整合了slf4j的依赖)

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

接下来 就可以很方便地使用了:

// 实现PageProcessor类 复写方法
public class JobProcessor implements PageProcessor {
   

    // 解析页面
    public void process
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值