如果我将Firefox指向http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes,我会得到一页HTML。但是,如果我在Python中尝试这个:
import urllib site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes' req = urllib.urlopen(site) text = req.read()
我得到以下内容:
500内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。
我做错了什么?
答案 0 :(得分:3)
从表面上看,你没有做错任何事,并且正如错误页面所说,你应该联系网站的管理员,因为他们是服务器日志,可以解释发生了什么。幸运的是,bitbucket的网站管理员很友好!
毫无疑问,浏览器设置了一种标题或标题组合,urllib设置了另一种方式,服务器上的错误在后一种情况下变得棘手。您可能想要确切地查看正在发送的标头,例如在firefox中使用firebug,并重现那些直到你完全隔离服务器bug;最有可能的是它会成为用户代理或某些“接受”-ish标题,这会使这个bug变得棘手。
答案 1 :(得分:3)
你没有做错任何事,bitbucket做了一些用户代理检测(例如检测mercurial客户端)。只需changing the user agent修复它(如果它没有urllib
作为子字符串)。
答案 2 :(得分:-2)
我不认为你做错了什么 - 看起来这个服务器刚刚关闭?你的脚本对我来说很好('text'包含的数据与浏览器中显示的数据相同)。