等待请求完成 – Python Scrapy
发布时间:2020-12-20 13:14:15 所属栏目:Python 来源:网络整理
导读:我有一个Scrapy Spider,它会抓取一个网站,该网站需要刷新令牌才能访问它们. def get_ad(self,response): temp_dict = AppextItem() try: Selector(response).xpath('//div[@class="messagebox"]').extract()[0] print("Captcha found when scraping ID "+ re
我有一个Scrapy Spider,它会抓取一个网站,该网站需要刷新令牌才能访问它们.
def get_ad(self,response): temp_dict = AppextItem() try: Selector(response).xpath('//div[@class="messagebox"]').extract()[0] print("Captcha found when scraping ID "+ response.meta['id'] + " LINK: "+response.meta['link']) self.p_token = '' return Request(url = url_,callback=self.get_p_token,method = "GET",priority=1,meta = response.meta) except Exception: print("Captcha was not found") 我有一个get_p_token方法刷新令牌并分配给self.p_token 找到Captcha时调用get_p_token,但问题是,其他请求继续执行. 我希望如果找到Captcha,在get_p_token执行完成之前不要发出下一个请求. 我有优先级= 1,但这没有帮助. HERE is full code of Spider P.S: 实际上,令牌被传递到每个URL,这就是为什么我要等到找到新的令牌然后刮掉其余的URL. 解决方法
这是我将如何继续:
def get_p_token(self,response): # generate token ... yield Request(url = response.url,callback=self.no_captcha,meta = response.meta,dont_filter=True) def get_ad(self,response): temp_dict = AppextItem() try: Selector(response).xpath('//div[@class="messagebox"]').extract()[0] print("Captcha found when scraping ID "+ response.meta['id'] + " LINK: "+response.meta['link']) self.p_token = '' yield Request(url = url_,meta = response.meta) except Exception: print("Captcha was not found") yield Request(url = url_,meta = response.meta) 你还没有提供工作代码,所以这只是问题的证明…这里的逻辑非常简单: 如果找到验证码,则转到get_p_token,并在生成令牌后,它会请求您之前请求的URL.如果没有找到验证码,它会正常进行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |