是否可以将 Scrapy 蜘蛛配置为忽略访问过的 URL 中的 URL 参数,这样如果 www. example.com/page?p=value1
已经被访问过?
最佳答案
你不能配置它,但是按照 documentation ,您可以继承标准重复过滤器类并覆盖它的 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)
在 settings.py
中将 DUPEFILTER_CLASS
设置为您的类:
DUPEFILTER_CLASS = 'myproject.dupefilters.MyRFPDupeFilter'
关于python - 配置spider忽略url参数,这样scrapy就不会两次抓取同一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939963/