在Scrapy中更改重定向的URL

时间:2014-12-17 10:19:23

标签: scrapy

可以在scrapy中更改重定向的网址吗?

例如,我抓取了一个网址:

http://someurl.com/A

有重定向到

http://redirectedurl.com:8080/A

由于端口号,此URL失败。好的URL需要没有端口号,所以我想把它改成

http://redirectedurl.com/A

我尝试使用redirect_urls更新request.meta,其中包含没有端口的新网址。 文档说MetaRefreshMiddleware服从redirect_urls,但没有成功

meta.update({'redirect_urls': ['http://redirectedurl.com/A '] })
r = Request(url=url, callback=callback, meta=meta)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

无需深入尝试解决问题"引擎盖下#34;。您可以检查请求是否已重定向,然后使用修改后的URL创建新请求:

import re
if 'redirect_urls' in response.meta:
    new_url = re.sub(":\d+","", response.url)
    yield Request(new_url)

当然,你会在那里添加额外的支票,这只是一个最小的例子。