Scrapy意外跳过URL

时间:2019-03-11 14:36:13

标签: scrapy scrapyd scrapy-pipeline scrapy-shell

我搭建了一个蜘蛛来抓取网站上的URL。 URL的数量不确定,范围可能在500-50000之间,依此类推。抓取某些URL时会无缘无故地被跳过。出于好奇,我将并发请求数提高到500,而并发请求数per_ip则提高到50。结果,当我庆祝成就的喜悦时,它的速度非常快,另一方面,损失却很大。主要网址被跳过,数据不一致。

有人可以帮我找出确切的问题和解决方案吗?

我确实照顾过所有状态代码,例如300s 400s 500s。

     if response.status in [404, 403, 302, 503, 502, 400, 407]:
        self.status = 'blocked'
        self.start_urls.append(self._request)
        self.start_urls = list(set(self.start_urls))
        print('blocked and current length->', len(self.start_urls))
        yield Request(url=response.request.url, callback=self.parse, dont_filter=True)
    else:
        self.status = ''
        try:
            self.start_urls.remove(self._request)
        except Exception as e:
            pass

上面的代码段正在处理状态代码,并且如果有任何机会被跳过,它将被添加回列表中,除非获得成功。

0 个答案:

没有答案