我想在重定向后得到一个页面的地址。我有以下代码
url = 'https://simple.wikipedia.org/wiki/Gcd'
print(urlopen(url).geturl())但是它不工作,它打印https://simple.wikipedia.org/wiki/Gcd,而它应该打印除数。
那么,它有什么问题呢?
发布于 2016-03-26 21:23:45
其实是没有问题的。打开https://simple.wikipedia.org/wiki/Gcd时得到的URL正好是那个URL。更改URL的唯一方法是重定向,如果您查看来自该URL的响应,您可以看到它只返回一个200状态代码。所以没有重定向。
但是,当您在浏览器中打开URL时,该URL确实会被更改为https://simple.wikipedia.org/wiki/Greatest_common_divisor。如果没有重定向,这种情况是如何发生的?
这实际上是一个新的MediaWiki特性,它使用历史API在浏览器中重写URL。它只是替换了浏览器中显示的URL --但实际上没有发出新请求,也没有真正的HTTP重定向。
这是一种只在启用JavaScript的现代浏览器中工作的功能。否则,您将停留在Gcd URL上,这也是MediaWiki较早版本的行为。
您可以在MediaWiki中了解有关这个新的Phabricator任务T37045特性的更多信息。
至于您的“问题”,您应该考虑使用MediaWiki与MediaWiki API进行通信,这也会告诉您页面何时是重定向。
https://stackoverflow.com/questions/36240926
复制相似问题