加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Scrapy:如何调试scrapy丢失的请求

发布时间:2020-12-20 13:39:06 所属栏目:Python 来源:网络整理
导读:我有一个scrapy蜘蛛,但它有时不会返回请求. 我发现通过在产生请求之前和获得响应之后添加日志消息. Spider遍历页面并解析每个页面上的项目报废链接. 这是代码的一部分 SampleSpider(BaseSpider): .... def parse_page(self,response): ... request = Request
我有一个scrapy蜘蛛,但它有时不会返回请求.

我发现通过在产生请求之前和获得响应之后添加日志消息.

Spider遍历页面并解析每个页面上的项目报废链接.

这是代码的一部分

SampleSpider(BaseSpider):
    ....
    def parse_page(self,response):
        ...
        request = Request(target_link,callback=self.parse_item_general)
        request.meta['date_updated'] = date_updated
        self.log('parse_item_general_send {url}'.format(url=request.url),level=log.INFO)
        yield request

    def parse_item_general(self,response):
        self.log('parse_item_general_recv {url}'.format(url=response.url),level=log.INFO)
        sel = Selector(response)
        ...

我已经比较了每条日志消息的数量,“parse_item_general_send”大于“parse_item_general_recv”

最终统计数据中没有400或500个错误,所有响应状态代码仅为200.看起来请求只是消失了.

我还添加了这些参数以最大限度地减少可能的错误:

CONCURRENT_REQUESTS_PER_DOMAIN = 1
DOWNLOAD_DELAY = 0.8

由于扭曲的异步性质,我不知道如何调试这个bug.
我发现了一个类似的问题:Python Scrapy not always downloading data from website,但它没有任何回应

解决方法

在和Rho相同的音符上,您可以添加设置

DUPEFILTER_CLASS = 'scrapy.dupefilter.BaseDupeFilter'

到你的“settings.py”将删除网址缓存.这是一个棘手的问题,因为scrapy日志中没有调试字符串告诉您何时使用缓存结果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读