可以在scrapy中更改重定向的网址吗?
例如,我抓取了一个网址:
有重定向到
http://redirectedurl.com:8080/A
由于端口号,此URL失败。好的URL需要没有端口号,所以我想把它改成
我尝试使用redirect_urls更新request.meta,其中包含没有端口的新网址。 文档说MetaRefreshMiddleware服从redirect_urls,但没有成功
meta.update({'redirect_urls': ['http://redirectedurl.com/A '] })
r = Request(url=url, callback=callback, meta=meta)
有什么想法吗?
答案 0 :(得分:1)
无需深入尝试解决问题"引擎盖下#34;。您可以检查请求是否已重定向,然后使用修改后的URL创建新请求:
import re
if 'redirect_urls' in response.meta:
new_url = re.sub(":\d+","", response.url)
yield Request(new_url)
当然,你会在那里添加额外的支票,这只是一个最小的例子。