配置spider忽略url参数,这样scrapy就不会两次抓取同一个页面

jpl*_*ssn 2 python scrapy scrapy-spider

是否可以将 Scrapy 蜘蛛配置为忽略访问过的 URL 中的 URL 参数,以便在已经访问www.example.com/page?p=value2过的情况下不会被访问www.example.com/page?p=value1

Tom*_*art 7

你不能配置它,但根据文档,你可以子类化标准重复过滤器类并覆盖它的request_fingerprint方法。

这没有经过测试,但应该可以工作。第一个子类标准重复过滤器类(例如dupefilters.py):

from w3lib.url import url_query_cleaner
from scrapy.dupefilters import RFPDupeFilter
from scrapy.utils.request import request_fingerprint

class MyRFPDupeFilter(RFPDupeFilter):

    def request_fingerprint(self, request):
        new_request = request.replace(url=url_query_cleaner(request.url))
        return request_fingerprint(new_request)
Run Code Online (Sandbox Code Playgroud)

设置DUPEFILTER_CLASS为您的班级settings.py

DUPEFILTER_CLASS = 'myproject.dupefilters.MyRFPDupeFilter'
Run Code Online (Sandbox Code Playgroud)