scrapy爬虫框架
1.Scrapy爬虫框架
- scrapy 不是一个函数功能库,而是一个爬虫框架。
- scrapy爬虫框架:
- 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。
- .简单说爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
- scrapy爬虫框架共包含七个部分(5+2结构),五个主体部分,两个中间件。数据流如图。
- 框架的入口SPIDERS,出口为ITEM PIPELINES,DOWNLOADER,ENGIN,SCHEDULER模块已经实现了,用户只需要编写ITEM PIPELINES和SPIDERS模块。SPIDERS提供需要访问的url链接,同时对网页进行解析,而ITEM PIPELINES对页面的后处理。
- 这种对模块代码的编写方式,也可以叫做配置。
2.模块介绍
- Engin:控制所有模块之间的数据流,根据条件触发事件,不需要用户修改。
- Downloader:根据请求下载页面,不需要用户修改。
- Scheduler:对所有爬取请求进行调度管理,不需要用户修改。
- 中间件模块Downloader Middleware
- 实施Engin,Scheduler和Downloader之间用户可配置的控制。
- 通过中间件修改,丢弃,新增请求或响应。
- Spider:解析Downloader返回的响应(Response),产生爬取项(scraped item)和爬取请求(Requset),是最核心单元,是需要用户编写主要模块。
- Item Piplines:以流水线方式处理Spide产生的爬取项。有一组操作顺序组成,每个操作是一个Item Pipline类型。包括清理,检验和查重爬取项中的ITEM数据,将数据存储到数据库等操作。需人工配置。
- Spider Middleware:
- 对请求和爬取项再处理。
- 通过中间件修改,丢弃,新增请求或爬取项。
3.requests库与Scarpy
- 相同点:都可以进行网页请求和爬取,是python的两个重要的爬虫实现路线;可用性好;都没有处理js,提交表单,应对验证码的功能;
requests | scrapy |
网页级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能差 | 并发性好,性能较高 |
重点在页面下载 | 重点在爬虫结构 |
定制灵活 | 一般定制灵活,深度定制难 |
上手简单 | 入门稍难 |
- 小需求,推荐使用requests库,不太小的推荐使用scrapy框架。自搭框架建议使用requests。