内置下载器中间件参考¶本页介绍了所有随Scrapy一起提供的下载器中间件组件。有关如何使用它们以及如何编写自己的下载器中间件的信息,请参见 downloader middleware usage guide . 有关默认启用的组件列表(及其顺序),请参见 DOWNLOADER_MIDDLEWARES_BASE 设置。 CookiesMiddleware¶- classscrapy.downloadermiddlewares.cookies.CookiesMiddleware[源代码]¶
此中间件支持使用需要cookie的站点,例如使用会话的站点。就像网络浏览器发送的cookies一样,它也会跟踪网络浏览器发出的请求。 警告 当将非UTF8编码的字节序列传递给 Request ,即 CookiesMiddleware 将记录一个警告。请参阅 高级自定义 自定义日志记录行为。 警告 Cookie通过 Cookie 标头不会被 CookiesMiddleware 。如果需要为请求设置cookie,请使用 Request.cookies 参数。这是一个正在处理的已知电流限制。
以下设置可用于配置cookie中间件: COOKIES_ENABLED
COOKIES_DEBUG
每个蜘蛛有多个cookie会话¶通过使用 cookiejar 请求元键。默认情况下,它使用一个cookie jar(会话),但您可以通过一个标识符来使用不同的标识符。 例如:: for i, url in enumerate(urls):
yield scrapy.Request(url, meta={'cookiejar': i},
callback=self.parse_page)
记住 cookiejar meta-key不是“粘性的”。您需要在随后的请求中继续传递它。例如:: def parse_page(self, response):
# do some processing
return scrapy.Request("http://www.example.com/otherpage",
meta={'cookiejar': response.meta['cookiejar']},
callback=self.parse_other_page)
COOKIES_ENABLED¶违约: True 是否启用cookie中间件。如果禁用,则不会向Web服务器发送cookie。 注意,尽管 COOKIES_ENABLED 设置中频 Request. Remeta: ['dont_merge_cookies'] <dont_merge_cookies>`评估结果为 True 请求cookies将 not 发送到Web服务器并在中接收cookie Response 将 not 与现有cookie合并。 有关更多详细信息,请参阅 cookies 中的参数 Request 。 COOKIES_DEBUG¶违约: False 如果启用,Scrapy将记录发送到请求中的所有cookie(即。 Cookie 头)和响应中接收到的所有cookie(即。 Set-Cookie 标题)。 下面是一个使用 COOKIES_DEBUG 启用:: 2011-04-06 14:35:10-0300 [scrapy.core.engine] INFO: Spider opened
2011-04-06 14:35:10-0300 [scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to: <GET http://www.diningcity.com/netherlands/index.html>
Cookie: clientlanguage_nl=en_EN
2011-04-06 14:35:14-0300 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <200 http://www.diningcity.com/netherlands/index.html>
Set-Cookie: JSESSIONID=B~FA4DC0C496C8762AE4F1A620EAB34F38; Path=/
Set-Cookie: ip_isocode=US
Set-Cookie: clientlanguage_nl=en_EN; Expires=Thu, 07-Apr-2011 21:21:34 GMT; Path=/
2011-04-06 14:49:50-0300 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://www.diningcity.com/netherlands/index.html> (referer: None)
[...] |