Python urllib.request.urlopen 出现 500 错误

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15912257/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 21:21:46  来源:igfitidea点击:

500 error with urllib.request.urlopen

pythonpython-3.x

提问by Lisa Griffin

The following code:

以下代码:

   req = urllib.request.Request(url=r"http://borel.slu.edu/cgi-bin/cc.cgi?ftheitroadm_ionchur=im&ftheitroadm=Seol&hits=1&format=xml",headers={'User-Agent':' Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'})
   handler = urllib.request.urlopen(req)

is giving me the following exception:

给了我以下例外:

Traceback (most recent call last):
  File "C:/Users/Foo/lang/old/test.py", line 46, in <module>
    rip()
  File "C:/Users/Foo/lang/old/test.py", line 36, in rip
    handler = urllib.request.urlopen(req)
  File "C:\Python32\lib\urllib\request.py", line 138, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python32\lib\urllib\request.py", line 375, in open
    response = meth(req, response)
  File "C:\Python32\lib\urllib\request.py", line 487, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python32\lib\urllib\request.py", line 413, in error
    return self._call_chain(*args)
  File "C:\Python32\lib\urllib\request.py", line 347, in _call_chain
    result = func(*args)
  File "C:\Python32\lib\urllib\request.py", line 495, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 500: Internal Server Error

but it works fine in my browser, whats the issue?

但它在我的浏览器中运行良好,有什么问题吗?

回答by Martijn Pieters

The server is rather b0rken. It responds with a 500 error in the browseras well.

服务器相当b0rken。它也在浏览器中响应 500 错误。

You can catch the exception and still read the response:

您可以捕获异常并仍然读取响应:

import urllib.request
from urllib.error import HTTPError

req = urllib.request.Request(url=r"http://borel.slu.edu/cgi-bin/cc.cgi?ftheitroadm_ionchur=im&ftheitroadm=Seol&hits=1&format=xml",headers={'User-Agent':' Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'})
try:
    handler = urllib.request.urlopen(req)
except HTTPError as e:
    content = e.read()