使用 Python 和 Beautiful Soup 进行网页抓取:错误“'页面'未定义”

时间:2020-12-30 01:30:48

标签: python beautifulsoup

从投注 site 中,我想收集投注率。检查页面后,我注意到这些费率包含在 eventprice 类中。按照 here 的解释,我因此用 Python 编写了这段代码,使用 Beautifulsoup 模块:

from bs4 import BeautifulSoup
import urllib.request
import re

url = "http://sports.williamhill.com/bet/fr-fr"

try:
    page = urllib.request.urlopen(url)
except:
    print("An error occured.")

soup = BeautifulSoup(page, 'html.parser')

regex = re.compile('eventprice')
content_lis = soup.find_all('button', attrs={'class': regex})
print(content_lis)

但是,我收到以下错误:

<块引用>

"(...) 第 12 行,在 汤 = BeautifulSoup(page, 'html.parser') NameError: name 'page' 未定义"

1 个答案:

答案 0 :(得分:2)

如果您打印异常详细信息,您将看到正在发生的事情:

try:
    page = urllib.request.urlopen(url)
except Exception as e:
    print(f"An error occurred: {e}")

输出

An error occurred: HTTP Error 403: Forbidden
Traceback (most recent call last):
  File ".../main.py", line 12, in <module>
    soup = BeautifulSoup(page, 'html.parser')
NameError: name 'page' is not defined

urlopen() 引发异常,导致未定义的“页面”变量。 在这种情况下,它是 403,这意味着您可能需要添加身份验证才能访问此 URL。

更新:

403 响应意味着无法以您尝试访问的方式访问此 URL。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403