scrapy 通过meta中的cookiejar 保证一个请求链的cookie信息
在现实的业务中,比如图片验证码的识别。在爬虫爬取的时候页面被重定向到了一个验证码识别页面,比如说一个字符验证,这种就是单独一个请求。不是滑动验证那种,需要一个容器加载js文件,然后拖动验证码识别。对于字符验证,就是一个post请求,但是scrapy中返回的是一个文本界面,如果,这个时候你把url复制出来然后再请求,通过了验证,但是你请求的已经是另外一个会话下的验证了,不是当前会话下的验证,...
在现实的业务中,比如图片验证码的识别。
在爬虫爬取的时候页面被重定向到了一个验证码识别页面,比如说一个字符验证,这种就是单独一个请求。不是滑动验证那种,需要一个容器加载js文件,然后拖动验证码识别。
对于字符验证,就是一个post请求,但是scrapy中返回的是一个文本界面,如果,这个时候你把url复制出来然后再请求,通过了验证,但是你请求的已经是另外一个会话下的验证了,不是当前会话下的验证,那么如何保证当前的验证就是我们scrapy中的那个会话下的验证码呢,这时候就需要scrapy中的cookie机制,cookiejar。通过这个cookiejar能够保证一个请求链的cookie的传递。
但是还需要scrapy中的一个函数:
yield scrapy.FormRequest.from_response(
response,
url=self.root_url + '/inc/randomimage.php', callback=self.parse_img,
headers=self.headers, dont_filter=True,
meta={'address_id': address_id, 'start_url': start_url, "cookiejar": response.meta["cookiejar"]}
)
这个时候就能够保证不再是一个新的请求,而是基于当前请求cookie下加载的验证码。
更多推荐
所有评论(0)