You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scrapy-Splash重复过滤器警告:去重功能是否正常工作?

Scrapy-Splash重复过滤器警告问题解答

你的爬虫代码

import scrapy
from scrapy_splash import SplashRequest


class BeerSpider(scrapy.Spider):
    name = 'beer'

    def start_requests(self):
        url = 'https://www.beerwulf.com/en-gb/c/mixedbeercases'

        yield SplashRequest(url=url, callback=self.parse)

    def parse(self, response):
        products = response.css('a.product.search-product.product-info-container.draught-product.notranslate.pack-product')
        for item in products:
            yield{
                'name': item.css('h4::text').get(),
                'price': item.css('span.price::text').get(),        
                }

警告信息(中文翻译)

2023-04-03 10:58:53 [py.warnings] 警告: C:\Users\chris\anaconda3\lib\site-packages\scrapy_splash\dupefilter.py:20: ScrapyDeprecationWarning: 调用了已废弃的函数scrapy.utils.request.request_fingerprint()。

如果你在Scrapy组件中使用此函数,且允许组件用户通过设置修改指纹算法,请在组件中改用crawler.request_fingerprinter.fingerprint()(可通过from_crawler类方法获取crawler对象)。

否则,可以考虑改用scrapy.utils.request.fingerprint()函数。

无论哪种方式,生成的指纹都会以字节形式返回,而非字符串,且与request_fingerprint()生成的指纹不同。切换前,请确保你了解其影响(如缓存失效)并接受这些后果;否则,可以考虑实现自定义函数,返回与已废弃的request_fingerprint()相同的指纹。
fp = request_fingerprint(request, include_headers=include_headers)

问题解答

  1. 重复过滤器当前仍正常工作
    这个警告仅代表request_fingerprint()函数已被Scrapy标记为废弃(未来版本会移除),但当前版本中该函数仍能正常生成请求指纹,scrapy_splash的重复过滤器依然会基于这些指纹识别重复请求,你的爬虫不会出现重复请求未被过滤的问题。

  2. 警告产生的原因
    Scrapy更新了请求指纹生成的API规范,推荐使用新的API替代旧函数,但scrapy_splash库尚未跟进适配这个更新,因此触发了弃用警告。

  3. 长期处理建议

    • 等待scrapy_splash官方发布更新,适配Scrapy的新API,从根源消除警告。
    • 若想手动临时修复,可修改scrapy_splash库的dupefilter.py文件(路径见警告信息),将旧的request_fingerprint调用替换为新API:
      # 导入新的指纹生成函数
      from scrapy.utils.request import fingerprint as request_fingerprint
      
      注意:修改第三方库文件会在库更新后被覆盖,仅作为临时方案。

内容的提问来源于stack exchange,提问作者Chris Abell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:23:33