我想在重定向后获取页面的地址。我有以下代码
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。
那么,它有什么问题?
答案 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进行沟通,这也会告诉你何时页面是重定向。