web-dev-qa-db-ja.com

スクレイピーに重複したURLを強制的にクロールさせる方法は?

私は学習しています Scrapy Webクロールフレームワーク。
デフォルトでは、重複したURLまたはスクレイピーがすでにクロールしたURLはクロールしません。

Scrapyが重複URLまたは既にクロールされたURLをクロールするようにするにはどうすればよいですか?
インターネットで調べてみましたが、関連するヘルプが見つかりませんでした。

Scrapy-Spider crawls duplicate URLs からDUPEFILTER_CLASS = RFPDupeFilterおよびSgmlLinkExtractorを見つけましたが、この質問は私が探しているものと反対です

21

Request()dont_filter=True引数を探している可能性があります。 http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects を参照してください

40
paul trmbrth

よりエレガントな解決策は、重複するフィルターを完全に無効にすることです:

# settings.py
DUPEFILTER_CLASS = 'scrapy.dupefilters.BaseDupeFilter'

このように、dont_filter=Trueを使用してすべてのリクエスト作成コードを煩雑にする必要はありません。別の副作用:これは重複したフィルタリングのみを無効にし、オフサイトフィルタリングのような他のフィルターは無効にしません。

この設定をプロジェクト内の複数のスパイダーの1つまたは一部のみに選択的に使用する場合は、スパイダー実装の custom_settings を使用して設定できます。

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
    }
15