通用爬虫框架开发

需求: 品牌监控,各品牌关键词在各个数据源关于此关键词的数据抓取,生成protobuf数据格式的log,以小时入,并传入bos中

思路是: 输入关键词,调用各个数据源对应的爬虫接口和解析方式获得数据

框架设计思想:

爬虫框架初期思路是实现解耦爬虫流程(http请求,获得响应,解析响应体,通过管道进行数据处理)封装成三个对象和5个模块,而封装实现就是三个对象在5个模块中间的方法调用,解析

对象部分:

http请求分别封装request对象,response对象

request对象首先调用python爬虫库requests,封装其请求方法和请求参数

流程解析部分:

request对象生成后,如果不添加异步功能,就直接用download模块去发送request对象的(中间可以添加随机ip,useragent,cookie等等),得到相响应对象之后,动态调用对应爬虫的解析方式去解析,最后生成最终想要的数据

详细流程:

五个模块, 爬虫模块: 起始url,解析响应数据,

调度模块: 请求队列

下载器模块: 根据请求,分析请求的请求方法请求体生成响应

目标数据模块: 定义数据格式

引擎模块:整体逻辑驱动

⁃ a. 构造spider中start_urls中的请求

⁃ b. 传递给调取器进行保存,之后从中取出

⁃ c .取出的request对象交给下载器进行下载,返回response

⁃ d .response交给爬虫模块进行解析,提取结果

⁃ e .如果结果是request对象,重新交给调度器,如果结果是item对象,交给管道处理(中间做个判断即可)

需要实现的功能有:

1 支持多种不同爬虫,(导入各个爬虫对象)

2 自动调用对应爬虫解析方法(读取框架默认settings,再将对应爬虫的settings添加进去并且覆盖掉)

4 实现多线程 (for循环生成新的线程,实现settings控制for循环次数,线程完毕后自动生成新的线程)

5 实现异步(通过中间生成Queue,放入请求对象,多线程读取请求对象)

6 实现速度控制 (从Queue读取数据时可以设置时间延迟,每个spider不同)

7 中间件模块方法拓展(添加随机useragent,随机ip,甚至随机cookie)

8 流程控制 (通过框架内spider_frame.engine实现)

框架模型为: project(配置新爬虫) spider_frame(通用爬虫框架模块)

后期会添加通用爬虫平台的建设功能(前端新开页面)

你可能感兴趣的:(通用爬虫框架开发)