scrapy 中间件

注意:中间件在配置文件中,后面的数值很重要

一、下载中间件

注意:from_crawler 要返回 cls() 对象或抛出异常,cls() -> __init__方法

1、process_reuqest

何时执行: request ->(下载中间件) 下载器

返回值

None: 继续执行后面中间件的链

response:不会执行request_process和request_exception方法,不会执行下载请求,直接执行request_response

request:返回给调度器,让调度器重新分配

IngoreRequest:执行process_exception方法,若没有执行request.errback方法,若没有此方法,则异常会被忽略,日志都没有

2、process_response

何时执行:下载器返回response->调度器

返回值

response:继续执行后续的process_response方法

request:停止执行process_response方法,返回给调度器,调度器重新分配

IgnoreRequest:执行request.errback,若没有,则异常会被忽略,日志也没有

3、process_exception

何时执行:执行下载器的时候有异常抛出,或process_request方法中返回IngoreRequest

返回值

None:继续执行后面的process_exception

response:直接执行process_response方法

request:停止执行process_exception方法,返回给调度器,重新分配

二、默认中间件

'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
# 请求robots.txt文件,并解析其中的规则

'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
# Basic-auth

'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
# 请求超时

'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,
# 默认请求头

'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500,
# User-agent

'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550,
# 若果下载失败,重试几次

'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580,
# 使Meta标签重定向

'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590,
# 压缩 

'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
# 状态码300的重定向

'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
# Cookie

'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
# 代理

'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
# 下载信息统计

'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
# 下载结果的缓存

 

posted @ 2019-11-08 13:18  市丸银  阅读(89)  评论(0)    收藏  举报