【问题标题】:NameError in Beautiful SoupBeautiful Soup 中的 NameError
【发布时间】:2019-12-05 16:34:53
【问题描述】:

我是 Python 新手。每当我使用 Try except 时,就会出现 NameError。在没有异常处理的情况下完美运行。

from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.error import HTTPError


try:
    htm = urlopen('https://uiit.tech/placements/placements.pp')
except HTTPError as e:
    print(e)


bs = BeautifulSoup(htm, 'html.parser')
print(bs.h1)

输出错误

HTTP Error 404: Not Found
Traceback (most recent call last):line 12, in <module>
bs = BeautifulSoup(htm.read(), 'html.parser')
NameError: name 'htm' is not defined

【问题讨论】:

  • 你从哪里得到NameError?请添加完整的错误消息。
  • 为了避免得到NameError,你可以在print(e)之前使用htm = ""

标签: python web-scraping beautifulsoup


【解决方案1】:

您希望尝试在try 部分中使用htm。目前,由于异常,它从未设置过。

from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.error import HTTPError

try:
    htm = urlopen('https://uiit.tech/placements/placements.pp')  
    bs = BeautifulSoup(htm, 'html.parser')
    print(bs.h1)
except HTTPError as e:
    print(e)

【讨论】:

  • 谢谢它的工作。此 NameError 是由于 TRY 块中变量的范围造成的。
【解决方案2】:

尝试做:

except urllib.error.HTTPError as e:

    print(e)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 2018-04-22
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多