最近工作主要是一些爬虫相关的东西,由于公司需要构建自己的爬虫框架,在调研过程中参考了许多优秀的开源作品,包括webmagic,webcollector,Spiderman等,通过学习这些优秀的源码获益良多。

     webmagic是一个简单灵活的爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。(官网地址:http://webmagic.io/)

     本篇是webmagic源码阅读第一篇,主要探讨webmagic的核心机制,即一个BFS的爬虫是如何构建出来的。

    webmagic分为以下四大组件,Downloader(页面下载器),Scheduler(下载调度器),PageProcessor(页面解析器),Pipeline(管道组件,通常做将抓取结果入库写文件等操作)

                          photoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训(图片来自官网)

 以上四个组件由Spider组件组装起来,爬取数据时协同工作。我们先研究webmagic的核心类Spider。

在Spider中的run()方法中可以清晰的看到典型的BFS代码,通过一个循环不断地从scheduler中的内存队列中取一个抓取任务(Request)并进行相应处理(processRequest),如果抓取成功则回调监听器中的onSuccess()方法,失败则调用onError()方法,最后将已抓取页面的数量自增。如果队列中没有任何抓取任务了,爬虫会在这里停一会防止有新的任务

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式