webmagic学习笔记(4)---webmagic总体架构分析

来源:互联网 发布:美国缩表中国楼市知乎 编辑:程序博客网 时间:2024/05/14 05:03

在笔记(2)、笔记(3)里,我们对webmagic的eclipse开发环境进行了配置并完成了第一个小爬虫的编写,以上算是对webmagic进行了一次感性的认识。从本篇博文开始,开始学习webmagic的实现细节。
一下内容是我在使用了webmagic进行一些小爬虫编写的基础上的一些自己的认识,很大一部分受官方的使用手册影响。说白了,就是自己在理解的基础上重新打了一遍。
首先,祭出总体架构图。
这里写图片描述
从图中很明显看出webmagic的四大组件:PageProcessor、Pipeline、Downloader、Scheduler。

  • 1.PageProcessor
    对于像我这样的小白来说PageProcessor是实现整个爬虫的需要自己编写的核心代码 。PageProcessor负责解析页面,并根据自己的需求抽取有用信息(包括新的链接)。如果是简单的爬虫,只需要自己定制这一部分即可。

  • 2.Pipeline
    Pipeline负责了抽取结果的处理。比如你想把爬取的数据保存至数据库就可以通过Pipeline实现(需要自己写对应的Pipeline),webmagic默认提供了输出至控制台保存到文件两种方案。例子如每爬取一个新的页面,源码会自动通过ConsolePipeline将本页面的URL输出至控制台,如下图:
    这里写图片描述

  • 3.Downloader
    Downloader负责从互联网下载页面Page,交给Pageprocessor进行后续处理。webmagic默认使用Apache HttpClient作为下载工具。
  • 4.Schedule
    Schedule负责管理待抓取的URL,除此URL的去重也由Schedule负责完成。就是说,我们不用担心一个URL被多次抓取了怎么办,Schedule已经帮我们把这些工作做好了。

总结:WebMagic的结构按照页面的爬取流程分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。
Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

0 0
原创粉丝点击