未分类

何为下载中间件下载器中间件是Scrapy的请求/响应处理的类。这是一个轻量级的低级系统,用于全局更改Scrapy的请求和响应。使用要激活下载程序中间件组件,请将其添加到DOWNLOADER_MIDDLEWARES设置中,这是一个dict,其键为中间件类路径,其值为中间件顺序(权重)#Enableordisabledownloadermiddlewares#Seehttps://docs.scrapy.org/en/latest/topics/downloader-middleware.htmlDOWNLOADER_MIDDLEWARES={'lagouApp.middlewares.LagouappDownloaderMiddleware':543,}将该DOWNLOADER_MIDDLEWARES设置与DOWNLOADER_MIDDLEWARES_BASEScrapy中定义的设置合并(而不是被覆盖),然后按顺序进行排序,以获取启用的中间件的最终排序列表,请求会按照小到大执行,响应会按照大到小执行,其各个中间件权重大小的决定,可参照DOWNLOADER_MIDDLEWARES_BASE设置。如果要禁某个中间件把它设置为None就好。内置下载中间件CookiesMiddleware属于scrapy.downloadermiddlewares.cookies.CookiesMiddleware类使用此中间件,可以处理需要cookie的站点,例如使用会话的站点。它会跟踪Web服务器发送的cookie,并像网络浏览器一样,将其发送回后续请求(来自该蜘蛛)。注意meta.get(‘cookiejar’)不是“粘性”的您需要在后续请求中继续传递它defparse_page(self,response):#dosomeprocessingreturnscrapy.Request("https://bigdataboy.cn",meta={'cookiejar':response.meta['cookiejar']},callback=self.parse_other_page)相关设置COOKIES_ENABLED默认启用cookies#Disablecookies(enabledbydefault)是否启用cookies#COOKIES_ENABLED=TrueCOOKIES_DEBUG如果启用,Scrapy将记录请求中发送的所有cookie(即Cookie标头)和响应中接收的所有cookie(即Set-Cookie标头)。COOKIES_DEBUG=False开启效果2020-01-1420:20:26[scrapy.downloadermiddlewares.cookies]DEBUG:Receivedcookiesfrom:<200https://bigdataboy.cn>Set-Cookie:JSESSIONID=ABAAABAAAEEAAII73F8A39DC3BF1352400CBB34ABA2AB47;Path=/;HttpOnlySet-Cookie:SEARCH_ID=11c20adceed742cd9ed906fe2e0c47ad;Version=1;Max-Age=86400;Expires=Wed,15-Jan-202012:20:28GMT;Path=/Set-Cookie:user_trace_token=20200114202028-23b9b484-6bec-4761-a4ec-4a08c2bae9e9;Max-Age=31536000;Path=/;Domain=.lagou.com;2020-01-1420:20:26[scrapy.core.engine]DEBUG:Crawled(200)<GEThttps://bigdataboy.cn>(referer:None)UserAgentMiddleware属于scrapy.downloadermiddlewares.useragent.UserAgentMiddleware类允许蜘蛛覆盖默认用户代理的中间件。为了使Spider可以覆盖默认用户代理,user_agent必须设置其属性。DefaultHeadersMiddleware属于scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware类该中间件会把setting中指定的所有默认请求标头加入HttpProxyMiddleware属于scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware类该中间件通过设置Request.meta的proxy值来设置代理池和设置Request.headers里的认证头部(Proxy-Authorization)DownloadTimeoutMiddleware属于scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware类该中间件会获取DOWNLOAD_TIMEOUT的值给蜘蛛设置下载的超时时间。还可以给每个Request.meta设置download_timeout属性,单独设置超时时间。HttpAuthMiddleware属于scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware类该中间件使用基本访问身份验证(也称为HTTP身份验证)对从某些蜘蛛生成的所有请求进行身份验证。要启用某些蜘蛛网的HTTP身份验证,请设置这些蜘蛛网的http_user和http_pass属性。fromscrapy.spidersimportCrawlSpiderclassSomeIntranetSiteSpider(CrawlSpider):http_user='someuser'http_pass='somepass'name='bigdataboy.cn'#..restofthespidercodeomitted...HttpCacheMiddleware属于scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware类该中间件为所有HTTP请求和响应提供了低级缓存。它必须与缓存存储后端以及缓存策略结合使用HttpCompressionMiddleware属于scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware类该中间件允许从网站发送/接收压缩(gzip,deflate)流量。如果安装了brotlipy,此中间件还支持解码brotli压缩的响应。相关设置COMPRESSION_ENABLEDCOMPRESSION_ENABLED=TrueRedirectMiddleware属于scrapy.downloadermiddlewares.redirect.RedirectMiddleware类该中间件根据响应状态处理请求的重定向。可以在Request.meta的redirect_urls中找到请求通过的URL(在重定向时)。还可以在Request.meta的redirect_reasons中找到每个重定向的背后原因。例如:。[301,302,307,'metarefresh']相关设置REDIRECT_ENABLED#启用重定向中间件REDIRECT_ENABLED=TrueREDIRECT_MAX_TIMES#单个请求将遵循的最大重定向数。REDIRECT_MAX_TIMES=20RetryMiddleware属于scrapy.downloadermiddlewares.retry.RetryMiddleware类中间件,用于重试失败的请求,这些请求可能是由临时问题(例如连接超时或HTTP500错误)引起的。蜘蛛完成对所有常规(非失败)页面的爬网之后,将在抓取过程中收集失败的页面,并在最后进行重新请求。相关设置RETRY_ENABLED#启用“重试”中间件。RETRY_ENABLED=TrueRETRY_TIMES#除了首次下载外,最大重试次数。RETRY_TIMES=2RETRY_HTTP_CODES#重试哪个HTTP响应代码。RETRY_HTTP_CODES=[500,502,503,504,522,524,408,429]DownloaderStats属于scrapy.downloadermiddlewares.stats.DownloaderStats类中间件,用于存储通过它的所有请求,响应和异常的统计信息。要使用此中间件,必须启用该DOWNLOADER_STATS=True(默认开启)。AjaxCrawlMiddleware属于scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware类基于元片段html标签找到“AJAX可抓取”页面变体的中间件。有关更多信息,请参见https://developers.google.com/webmasters/ajax-crawling/docs/getting-started。