スクレイピーを使用して多言語サイトをクロールしています。オブジェクトごとに、3 つの異なる言語のバージョンが存在します。検索を出発点として使用しています。残念ながら、検索にはさまざまな言語の URL が含まれているため、解析時に問題が発生します。
したがって、送信する前に URL を前処理したいと思います。特定の文字列が含まれている場合は、URL のその部分を置き換えたいと考えています。
私のスパイダーはCrawlSpider
. 私はドキュメントを見て、make_request_from _url(url)
この試みにつながった方法を見つけました:
def make_requests_from_url(self, url):
"""
Override the original function go make sure only german URLs are
being used. If french or italian URLs are detected, they're
rewritten.
"""
if '/f/suche' in url:
self.log('French URL was rewritten: %s' % url)
url = url.replace('/f/suche/pages/', '/d/suche/seiten/')
elif '/i/suche' in url:
self.log('Italian URL was rewritten: %s' % url)
url = url.replace('/i/suche/pagine/', '/d/suche/seiten/')
return super(MyMultilingualSpider, self).make_requests_from_url(url)
しかし、それは何らかの理由で機能しません。URL を要求する前に URL を書き換える最良の方法は何ですか? たぶん、ルールのコールバック経由ですか?