【问题标题】:Unable to handle "HTTP Badstatus line" exception无法处理“HTTP Badstatus line”异常
【发布时间】:2016-08-03 14:00:49
【问题描述】:

我想处理http.client.BadStatusLine: '' 异常。 我在python3上。我的代码是

import http.client

try:
    req = urllib.request.Request(url, headers={'User-Agent': 'Chrome/51'})
    html = urllib.request.urlopen(req).read()
    soup = BeautifulSoup(html,"html.parser")
    return soup
except http.client.HTTPException as eror:
    print("Boom")

但是httpException 不在python3 中?

我读了stackOverFloeQuestionthis,但没听懂。有什么帮助吗?

【问题讨论】:

  • 在文档中:docs.python.org/3/library/… 您收到的实际错误是什么?
  • @DeepSpace。我想捕捉这个异常。这就对了。上图中红色符号表示HTTPException未定义。
  • 复制粘贴代码不会重现该问题。
  • 复制粘贴?对不起 。你没看懂这个问题。 @Hans然后解决它。谢谢。

标签: python python-3.x


【解决方案1】:

你需要下定决心:-)。您可以使用http.clienturllib.request,但您不应该使用其中一个然后尝试从另一个中捕获错误。如果您想坚持使用 urllib.request,则要捕获的类是 urllib.error.HTTPError

在您的情况下,使用Requests 可能更合适,这是一个更高级别的 http 库。

【讨论】:

  • 我想具体到BadStatusLine Exception。不完整HTTPError
  • 虽然这在逻辑上是正确的,但它仍然不能解释为什么不定义http.client.HTTPException。特别是当复制粘贴 OP 代码无法重现问题时。
  • 我认为 BadStatusLine 是在 httplib 中定义的。所以也许试试import httplib.BadStatusLine 并抓住那个错误。
猜你喜欢
  • 1970-01-01
  • 2020-02-07
  • 2019-05-02
  • 2010-09-08
  • 2016-08-21
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2019-04-13
相关资源
最近更新 更多