私は学習しています Scrapy Webクロールフレームワーク。
デフォルトでは、重複したURLまたはスクレイピーがすでにクロールしたURLはクロールしません。
Scrapyが重複URLまたは既にクロールされたURLをクロールするようにするにはどうすればよいですか?
インターネットで調べてみましたが、関連するヘルプが見つかりませんでした。
Scrapy-Spider crawls duplicate URLs からDUPEFILTER_CLASS = RFPDupeFilter
およびSgmlLinkExtractor
を見つけましたが、この質問は私が探しているものと反対です
Request()
でdont_filter=True
引数を探している可能性があります。 http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects を参照してください
よりエレガントな解決策は、重複するフィルターを完全に無効にすることです:
# 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',
}