WebMagic爬虫

WebMagic是一个Java开源爬虫框架,简化了爬虫开发。它由PageProcessor、Scheduler、Downloader和Pipeline四大组件组成,分别负责页面处理、URL管理、下载和结果处理。Spider作为核心,管理这些组件并提供多线程支持。使用WebMagic需要配置环境,如导入maven依赖,然后创建并启动Spider实例,自定义PageProcessor和Pipeline以实现特定逻辑。
摘要由CSDN通过智能技术生成

一、什么是WebMagic

1、相关理解

WebMagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。

WebMagic框架包含四个组件,PageProcessorSchedulerDownloaderPipeline。

这四大组件对应爬虫生命周期中的处理管理下载持久化等功能。

这四个组件都是Spider中的属性,爬虫框架通过Spider启动和管理。

WebMagic总体架构图如下:

[外链图片转存失败(img-RmPLndkB-1568971090443)(C:\Users\dell\Desktop\2e2eb9389b504fc2636f40fdefdde71190ef6d12.jpg)]

2、四大组件

PageProcessor 负责解析页面,抽取有用信息,以及发现新的链接。需要自己定义。WebMagic使用Jsoup作为HTML解析工具, 并基于其开发了解析XPath的工具Xsoup。

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

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

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

3、用于数据流转的对象

Request 是对URL地址的一层封装,一个Request对应一个URL地址。

它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方式。 除了URL本身外,它还包含一个Key-Value结构的字段 extra 。你可以在extra中保存一些特殊的属性,然后在其 他地方读取,以完成不同的功能。例如附加上一个页面的一些信息等。

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

ResultItems 相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。它的API与Map很类似, 值得注意的是它有一个字段 skip ,若设置为true,则不应被Pipeline处理。

4、控制爬虫运转的引擎–Spider

Spider是WebMagic内部流程的核心。Downloader、PageProcessor、Scheduler、Pipeline都是Spider的一个 属性,这些属性是可以自由设置的,通过设置这个属性可以实现不同的功能。Spider也是WebMagic操作的入 口,它封装了爬虫的创建、启动、停止、多线程等功能。下面是一个设置各个组件,并且设置多线程和启动的 例子。

public static void main(String[] args) {
       Spider.create(new GithubRepoPageProcessor())            /*从https://github.com/code4craft开始抓*/                  .addUrl("https://github.com/code4craft")            
  /*设置Scheduler,使用Redis来管理URL队列*/             .setScheduler(new RedisScheduler("localhost"))            /*设置Pipeline,将结果以json方式保存到文件*/             .addPipeline(new JsonFilePipeline("D:\\data\\webmagic")<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值