【发布时间】:2017-06-16 00:31:31
【问题描述】:
我已经创建了基本的scrapy项目并启用了documentation中的cookiemiddleware。
settings.py
COOKIES_ENABLED = True
COOKIES_DEBUG = True
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700
}
spiders/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 以继续
在它的身体里。
- 使用 Firefox 和 Firebug
请求
GET /gp/sc-redirect HTTP/1.1
主机:sellercentral.amazon.com
用户代理: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
接受编码:gzip、deflate、br
DNT:1
连接:保持活动
升级不安全请求:1
响应
找到 HTTP/1.1 302
服务器:服务器
日期:格林威治标准时间 2017 年 1 月 30 日星期一 16:12:51
内容类型:text/html;charset=UTF-8
传输编码:分块
连接:保持活动
位置:https://sellercentral.amazon.com/ap/signin?...
变化:接受编码、用户代理
缓存控制:无缓存、无存储、必须重新验证
过期:0
编译指示:无缓存
内容编码:gzip
设置Cookie:会话ID时间=1486368000l;路径=/;域名=.amazon.com; expires=Mon, 06-Feb-2017 16:12:51 GMT session-id=160-1127516-9252943;路径=/;域名=.amazon.com; expires=星期一,2017 年 2 月 6 日 16:12:51 GMT
- 使用 Scrapy
回应
调试:已爬网 (200) https://sellercentral.amazon.com/robots.txt>(引用者:无)
调试:从 https://sellercentral.amazon.com/gp/sc-redirect/> 重定向 (302) 到 https://sellercentral.amazon.com/ap/signin?...>
调试:从 收到 cookie 设置 Cookie:signin-sso-state-us=44538bf3-88d0-410b-9aa0-bc8da4b2d090;域名=.amazon.com;过期=周日,2037 年 1 月 25 日 16:09:14 GMT;路径=/ap/;安全的; HttpOnly
设置 Cookie:ap-fid="";域名=.amazon.com;过期=星期四,1970 年 1 月 1 日 格林威治标准时间 00:00:10;路径=/ap/;安全
这里是完整的log 和完整的最终response body。
为什么 Set-Cookie 结果不同,对于这种特殊情况如何使用 Scrapy 处理 cookie?
【问题讨论】: