标签:出错 aci cep too load body comm 框架 过程
在scrapy运行的整个过程中,对scrapy框架运行的某些步骤做一些适配自己项目的动作.
例如scrapy内置的HttpErrorMiddleware,可以在http请求出错时做一些处理.
配置settings.py.详见scrapy文档 https://doc.scrapy.org
scrapy的中间件理论上有三种(Schduler Middleware,Spider Middleware,Downloader Middleware),在应用上一般有以下两种
主要功能是在爬虫运行过程中进行一些处理.
主要功能在请求到网页后,页面被下载时进行一些处理.
- process_spider_input 接收一个response对象并处理,
位置是Downloader-->process_spider_input-->Spiders(Downloader和Spiders是scrapy官方结构图中的组件)
- process_spider_exception spider出现的异常时被调用
- process_spider_output 当Spider处理response返回result时,该方法被调用
- process_start_requests 当spider发出请求时,被调用
位置是Spiders-->process_start_requests-->Scrapy Engine(Scrapy Engine是scrapy官方结构图中的组件)
- process_request request通过下载中间件时,该方法被调用
- process_response 下载结果经过中间件时被此方法处理
- process_exception 下载过程中出现异常时被调用
编写中间件时,需要思考要实现的功能最适合在那个过程处理,就编写哪个方法.
中间件可以用来处理请求,处理结果或者结合信号协调一些方法的使用等.也可以在原有的爬虫上添加适应项目的其他功能,这一点在扩展中编写也可以达到目的,实际上扩展更加去耦合化,推荐使用扩展.
1
2
3
4
5
6
|
DOWNLOADER_MIDDLEWARES = { #‘xdb.middlewares.XdbDownloaderMiddleware‘: 543, # ‘xdb.proxy.XdbProxyMiddleware‘:751, ‘xdb.md.Md1‘ : 666 , ‘xdb.md.Md2‘ : 667 , } |
1
2
3
4
5
|
SPIDER_MIDDLEWARES = { # ‘xdb.middlewares.XdbSpiderMiddleware‘: 543, ‘xdb.sd.Sd1‘ : 666 , ‘xdb.sd.Sd2‘ : 667 , } |
标签:出错 aci cep too load body comm 框架 过程
原文地址:https://www.cnblogs.com/xyhh/p/10860858.html