0
www.example.com/page?p=value1
が既に訪問されている場合、www.example.com/page?p=value2
にアクセスしないように、スパイシースパイダーが訪問済みURLのURLパラメータを無視するよう設定できますか?URLパラメータを無視するようにスパイダーを設定すると、同じページを2度削らないようにする
www.example.com/page?p=value1
が既に訪問されている場合、www.example.com/page?p=value2
にアクセスしないように、スパイシースパイダーが訪問済みURLのURLパラメータを無視するよう設定できますか?URLパラメータを無視するようにスパイダーを設定すると、同じページを2度削らないようにする
設定することはできませんが、に従って、標準の複製クラスをサブクラス化して、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)
設定DUPEFILTER_CLASS
あなたのクラスにsettings.py
に:
DUPEFILTER_CLASS = 'myproject.dupefilters.MyRFPDupeFilter'
あなたはhttps://github.comを見てすることができます/ scrap-plugins/scrapy-querycleaner –