在python 3中获取重定向的URL

时间:2016-03-26 21:09:31

标签: python-3.x redirect urllib

我想在重定向后获取页面的地址。我有以下代码

url = 'https://simple.wikipedia.org/wiki/Gcd'
print(urlopen(url).geturl())

但它不起作用,它打印https://simple.wikipedia.org/wiki/Gcd,而它应打印https://simple.wikipedia.org/wiki/Greatest_common_divisor

那么,它有什么问题?

1 个答案:

答案 0 :(得分:1)

实际上没有问题。打开https://simple.wikipedia.org/wiki/Gcd 时获得的网址正好是该网址。 URL更改的唯一方法是重定向,如果查看该URL的响应,您可以看到它只返回200状态代码。所以没有重定向。

但是,当您在浏览器中打开URL时,URL确实会更改为https://simple.wikipedia.org/wiki/Greatest_common_divisor。如果没有重定向,这会怎么样?

这实际上是一个新的MediaWiki功能,它使用History API在浏览器中重写URL。它只是替换了浏览器中显示的URL,但没有实际发出新请求或是真正的HTTP重定向。

这是一项仅适用于启用了JavaScript的现代浏览器的功能。否则,您将继续使用Gcd网址,这也是旧版MediaWiki的行为。

您可以在Phabricator task T37045中了解有关此新MediaWiki功能的更多信息。

至于你的“问题”,你应该考虑使用MediaWiki API与MediaWiki进行沟通,这也会告诉你何时页面是重定向。