downloader中间件:可以自定义中间件,及中间价优先级;
i. 如何新增downloader middleware?重写process_request、process_response、process_exception函数;
ii. 为什么要设计downloader middleware? 对request进行改写,或对下载行为进行规定。如规定是否发送cookie,规定缓存机制,规定重试机制,规定如何处理重定向数据等。
iii. 内置的downloader middleware有哪些?约13个
CookiesMiddleware:是否向web server发送cookie
DefaultHeadersMiddleware:将所有request的头设置为默认模式
DownloadTimeoutMiddleware:设置request的timeout
HttpAuthMiddleware:对来自特定spider的request授权
HttpCacheMiddleware:给request&response设置缓存策略
HttpCompressionMiddleware:
ChunkedTransferMiddleware:
HttpProxyMiddleware:给所有request设置http代理
RedirectMiddleware:处理request的重定向
MetaRefreshMiddleware:根据meta-refresh html tag处理重定向
RetryMiddleware:失败重试策略
RobotsTxtMiddleware:robots封禁处理
UserAgentMiddleware:支持user agent重写
Spider中间件:可自定义中间件和优先级
iv. 如何添加新的spider中间件?重载process_spider_input、process_spider_output、process_spider_exception、process_start_requests
v. 内置的spider中间件有哪些?约5种
DepthMiddleware:对抓取深度和深度优先级进行设置;
HttpErrorMiddleware:设置成功码的范围
OffsiteMiddleware:主域过滤
RefererMiddleware:
UrlLengthMiddleware:限定有效url的长度