【发布时间】:2017-08-25 21:43:46
【问题描述】:
我正在使用 scrapy 抓取网站 这就是我登录后维护cookie jar的方式
def start_requests(self):
return [scrapy.Request("https://www.address.com", meta = {'cookiejar' : 1}, callback = self.post_login)]
def post_login(self, response):
print('Preparing login')
return [FormRequest.from_response(response, #"http://www.zhihu.com/login",
meta = {'cookiejar' : response.meta['cookiejar']},
headers = self.headers,
formdata = {
'username': 'user',
'password': 'pass123'
},
callback = self.after_login,
)]
然后,我需要的每个请求
yield scrapy.Request(curr, meta={'cookiejar':response.meta['cookiejar']}, callback=self.parse_detail)
一切顺利,直到我需要从网站上抓取图像。 我将需要使用 urllib.request.urlretrive()、scrapy 的 imagePipeline 或类似工具来打开 image_url。
但是我怎样才能用它传递我的 cookie 罐呢?否则会跳转到登录页面。
或者有没有办法通过scrapy请求直接下载图片?
感谢 eLRuLL 为我解决问题 但是python3中的代码需要稍微修改一下
从 io 导入 BytesIO 而不是从 StringIO 导入 StringIO 然后在下面的代码中使用 BytesIO。
【问题讨论】:
-
为什么需要
urllib来发出图像请求?如果你做一个scrapy请求,它会自动加载cookies -
我要下载图片,有没有办法通过scrapy请求获取图片内容?
-
这是你的问题吗?如何将scrapy响应解析为图像对象?
-
是的,我没有找到直接解析图像对象的scrapy响应的方法,你知道怎么做吗?
-
好的,那我来回答问题
标签: python cookies request scrapy python-requests