Scrapy爬虫框架结构5+2
- Enging:(相当于发动机)
整个框架的核心,控制所有模块的数据流,任何模块与模块之间的数据流动都要经过Enging模块的调度
根据各个模块提供的事件进行触发
不需要用户修改
- Downloader
根据用户提供的请求下载网页,功能只是获得一个请求,并向网络中提交请求,最终获得返回的相关内容
不需要用户修改
- Scheduler
对所有的爬取请求进行调度管理
不需要用户修改
- Scheduler+Enging+Downloader:
由Scheduler发送访问请求,经过Enging到达Downloader
- Enging+Downloader之间 中间件:Downloader Middleware
实施Scheduler、Enging和Downloader之间进行用户可配置的控制,用户可以通过编写中间件,修改、丢弃、新增请求或响应
- Spiders:
解析Downloader返回的响应(Response)
产生爬起项(scraped item)
产生额外的爬取请求(Request)
用户主要编写该模块代码
- Item Popelines:
以流水线方式处理Spider产生的爬取项
由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型
可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
需要用户编写配置代码
- Spiders+Enging 之间 中间件:Spider Middleware:
对请求和爬取项的再处理
修改、丢弃、新增请求或爬取项
用户重点编写Spiders模块和Item Popelines模块,以及两个中间件对数据流进行控制和操作
沿着1至8顺序理解其工作流程
Requests和Scrapy比较:
相同点:
不同点:
Scrapy常用命令:
scrapy -h 启动scrapy命令行