Scrapy中的内置中间件类型
常见中间件
下载中间件 DownloaderStats
保存所有通过的request、response及exception的中间件,通过启用 DOWNLOADER_STATS 来启用该中间件
代理中间件 HttpProxyMiddleware
提供了对request设置HTTP代理的支持,通过在 Request 对象中设置 proxy 元数据来开启代理。
User-Agent中间件 UserAgentMiddleware
用于覆盖spider的默认user agent的中间件,要使得spider能覆盖默认的user agent,其 user_agent 属性必须被设置。
Cookie中间件 CookiesMiddleware
追踪了web server发送的cookie,并在之后的request中发送回去,通过配置COOKIES_ENABLED
COOKIES_DEBUG来启用。
其他中间件
HTTP认证中间件 HttpAuthMiddleware
完成某些使用 Basic access authentication(或者叫HTTP认证)的spider生成的请求的认证过程,通过设置spider的 http_user 及 http_pass 属性。
HTTP缓存中间件 HttpCacheMiddleware
为所有HTTP request及response提供了底层(low-level)缓存支持,其由cache存储后端及cache策略组成。
Scrapy提供了两种HTTP缓存存储后端:
Filesystem storage backend (默认值)
DBM storage backend
HTTP压缩中间件 HttpCompressionMiddleware
提供了对压缩(gzip, deflate)数据的支持,通过设置COMPRESSION_ENABLED启用。
HTTP块数据传输中间件 ChunkedTransferMiddleware
添加了对 chunked transfer encoding 的支持。
下载超时中间件 DownloadTimeoutMiddleware
设置 DOWNLOAD_TIMEOUT 或 spider的 download_timeout 属性指定的request下载超时时间.
默认请求头中间件 DefaultHeadersMiddleware
设置 DEFAULT_REQUEST_HEADERS 指定的默认request header
重定向中间件 RedirectMiddleware
根据response的状态处理重定向的request,通过该中间件的(被重定向的)request的url可以通过 Request.meta 的 redirect_urls 键找到。
重试中间件 RetryMiddleware
爬取进程会收集失败的页面并在最后,spider爬取完所有正常(不失败)的页面后重新调度。 一旦没有更多需要重试的失败页面,该中间件将会发送一个信号(retry_complete), 其他插件可以监听该信号,通过下列设定进行配置 :
RETRY_ENABLED
RETRY_TIMES
RETRY_HTTP_CODES
robots中间件 RobotsTxtMiddleware
过滤所有robots.txt eclusion standard中禁止的request,确认该中间件及 ROBOTSTXT_OBEY 设置被启用以确保Scrapy尊重robots.txt。
Ajax爬取中间件
根据meta-fragment html标签查找 ‘AJAX可爬取’ 页面的中间件,通过设置AJAXCRAWL_ENABLED启用。
元数据刷新中间件 MetaRefreshMiddleware
根据meta-refresh html标签处理request重定向,通过以下设定进行配置:
METAREFRESH_ENABLED
METAREFRESH_MAXDELAY