在现实的业务中,比如图片验证码的识别。

在爬虫爬取的时候页面被重定向到了一个验证码识别页面,比如说一个字符验证,这种就是单独一个请求。不是滑动验证那种,需要一个容器加载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下加载的验证码。

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐