2017-08-29 10 views
0

www.example.com/page?p=value1が既に訪問されている場合、www.example.com/page?p=value2にアクセスしないように、スパイシースパイダーが訪問済みURLのURLパラメータを無視するよう設定できますか?URLパラメータを無視するようにスパイダーを設定すると、同じページを2度削らないようにする

+0

あなたはhttps://github.comを見てすることができます/ scrap-plugins/scrapy-querycleaner –

答えて

1

設定することはできませんが、に従って、標準の複製クラスをサブクラス化して、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' 
関連する問題