我正在使用Scrapy爬取一个多语言网站。对于每个对象,存在三种不同语言的版本。我使用搜索作为起点。不幸的是,搜索包含各种语言的URL,这在解析时会导致问题。
因此,在发送URL之前,我想预处理它们。如果它们包含特定字符串,我想替换URL的那部分内容。
我的爬虫扩展了CrawlSpider。我查看了文档,并找到了make_request_from_url(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之前重新编写它们的最佳方法是什么?也许通过规则回调?