一、前言
爬虫广泛使用于搜索引擎、新闻聚合以及大数据采集当中,一个良好的爬虫系统需要考虑很多方面:爬虫种子的获取需要有个稳定的任务调度机制,下载页面过程需要考虑到网页内容的生成是否是需要js渲染,请求网页是否需要设置请求头,还有请求过多会不会被对方封锁。另外就是数据处理过程,什么页面需要进行数据提取,什么页面是分裂成其它页面,还有页面内容提取需要采用什么手段:比如css selector解析,xpath解析,还有许多内容是通过json格式返回 需要解析json,还有的内容是属于xml,这就需要你都还有当获取到结果之后需要对结果进行整理、规范化和持久化。
二、设计思路
图2-1 设计思路
因为工作当中主要是对新闻内容进行抓取,所以结合新闻资讯进行处理。如图2-1所示,一个典型的新闻网站会分两个页面进行展示,一个是列表页一个是详情页,我们要从列表页进行处理分裂出详情页,然后下载详情页进行处理提取里面的详情页。最后对提取的结果进行处理,处理的结果后面可以接入其它流程如更进一步的清洗等,最后经过持久化的内容最终可以通过业务流程处理出去。当一个业务流程抓住输入输出,然后结构化和剖析这个流程后,就会知道怎么进行设计了。
三、爬虫系统架构图
图3-1 技术架构
相信接触过scrapy及其它第三方开源抓取