Scrapy:回复中缺少Cookie

时间:2017-01-30 18:24:15

标签: python cookies scrapy

我已经创建了基本的scrapy项目,并启用了documentation中的cookiemiddleware。

settings.py

COOKIES_ENABLED = True
COOKIES_DEBUG = True

DOWNLOADER_MIDDLEWARES = {
  'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700  
}

蜘蛛/ amazon_spider.py

class AmazonSpider(Spider):
  name = "amazon_spider"
  start_urls = ['https://sellercentral.amazon.com/gp/sc-redirect']

  def parse(self, response):
      self.logger.info(response.headers.getlist('Set-Cookie'))

但是,对于

的请求
COOKIES_ENABLED = True

响应与

请求的响应相同
COOKIES_ENABLED = False

具有

  

请启用Cookie继续

在它的身体里。

  1. 使用Firefox&萤火虫
  2.   

    请求
      GET / gp / sc-redirect HTTP / 1.1
      主持人:sellercentral.amazon.com
      User-Agent:Mozilla / 5.0(X11; Linux x86_64; rv:50.0)Gecko / 20100101   火狐/ 50.0
      接受:text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8
      接受语言:en-US,en; q = 0.5
      Accept-Encoding:gzip,deflate,br
      DNT:1
      连接:保持活力
      升级 - 不安全请求:1
      的 RESPONSE
      HTTP / 1.1 302找到了   服务器:服务器
      日期:星期一,2017年1月30日16:12:51 GMT
      内容类型:text / html; charset = UTF-8
      转移编码:分块
      连接:保持活力
      地点:https:// sellercentral.amazon.com/ap/signin?...
      变化:接受编码,用户代理
      缓存控制:无缓存,无存储,必须重新验证   到期:0
      Pragma:no-cache
      内容编码:gzip
      Set-Cookie:session-id-time = 1486368000l;路径= /;域= .amazon.com;到期=周一,06-Feb-2017 16:12:51 GMT session-id = 160-1127516-9252943;路径= /;域= .amazon.com;到期=周一,06-Feb-2017 16:12:51 GMT

    1. 使用Scrapy
    2.   

      RESPONSE
        DEBUG:Crawled(200)https://sellercentral.amazon.com/robots.txt> (引用者:无)
        DEBUG:重定向(302)到https://sellercentral.amazon.com/ap/signin?...>来自https://sellercentral.amazon.com/gp/sc-redirect/>
        DEBUG:收到的Cookie来自:< 302 https:// sellercentral.amazon.com/ap/signin?...>   Set-Cookie:signin-sso-state-us = 44538bf3-88d0-410b-9aa0-bc8da4b2d090;域= .amazon.com; Expires = Sun,25-Jan-2037 16:09:14 GMT;路径= / AP /;安全;仅Http
        Set-Cookie:ap-fid ="&#34 ;;域= .amazon.com; Expires = Thu,01-Jan-1970   00:00:10 GMT;路径= / AP /;安全

      以下是完整的log和完整的response body

      为什么Set-Cookie结果不同以及如何使用Scrapy处理这种特殊情况的cookie?

1 个答案:

答案 0 :(得分:2)

添加

USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0'

settings.py它工作正常,并没有抱怨禁用的cookie。

新回复是

  

DEBUG:Crawled(200)https://sellercentral.amazon.com/robots.txt> (引用者:无)
  收到的Cookie来自:< 302 https://sellercentral.amazon.com/gp/sc-redirect/>
  Set-Cookie:session-id-time = 1486368000l;路径= /;域= .amazon.com;到期=周一,06-Feb-2017 23:14:58 GMT
  Set-Cookie:session-id = 167-3010519-3678460;路径= /;域= .amazon.com;到期=周一,06-Feb-2017 23:14:58 GMT
  DEBUG:重定向(302)到https://sellercentral.amazon.com/ap/signin?...。>来自https://sellercentral.amazon.com/gp/sc-redirect/>