使用Python和Beautiful soup进行网页抓取:错误"';第'页;“未定义”;

使用Python和Beautiful soup进行网页抓取:错误"';第'页;“未定义”;,python,beautifulsoup,Python,Beautifulsoup,从一个投注,我想收集投注率。在查看页面后,我注意到这些费率包含在eventprice类中。按照的解释,我使用Beautifulsoup模块用Python编写了这段代码: from bs4 import BeautifulSoup import urllib.request import re url = "http://sports.williamhill.com/bet/fr-fr" try: page = urllib.request.urlopen(url)

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

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行,在 soup=BeautifulSoup(页面,'html.parser')名称错误:未定义名称“页面”


如果打印异常详细信息,您将看到发生了什么:

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
发生错误:HTTP错误403:禁止 回溯(最近一次呼叫最后一次): 文件“../main.py”,第12行,在 soup=BeautifulSoup(页面“html.parser”) 名称错误:未定义名称“页面” urlopen()引发异常,导致未定义的“page”变量。 在本例中,它是403,这意味着您可能需要添加身份验证才能访问此URL

更新:

403响应表示无法以您尝试访问此URL的方式访问此URL


如果打印异常详细信息,您将看到发生了什么:

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
发生错误:HTTP错误403:禁止 回溯(最近一次呼叫最后一次): 文件“../main.py”,第12行,在 soup=BeautifulSoup(页面“html.parser”) 名称错误:未定义名称“页面” urlopen()引发异常,导致未定义的“page”变量。 在本例中,它是403,这意味着您可能需要添加身份验证才能访问此URL

更新:

403响应表示无法以您尝试访问此URL的方式访问此URL


好吧,如果
try
不成功,那么
页面
就不会被定义。好吧,如果
try
不成功,那么
页面
就不会被定义。谢谢你的回答。“添加身份验证”是什么意思?如果问题是身份验证,则通常是401响应,而不是403。投注服务器正在返回HTTP 403状态,其含义在此处详述:。我认为,与401A403不同,401A403意味着无法以您正在尝试的方式访问您正在尝试的URL。有趣的是,我尝试了curl,结果它返回了200。通过添加-H“User-Agent:Python-urllib/3.9”,我再次获得了403。看起来他们是在根据用户代理字符串进行过滤,以阻止人们浏览他们的网站。谢谢你的回答。“添加身份验证”是什么意思?如果问题是身份验证,则通常是401响应,而不是403。投注服务器正在返回HTTP 403状态,其含义在此处详述:。我认为,与401A403不同,401A403意味着无法以您正在尝试的方式访问您正在尝试的URL。有趣的是,我尝试了curl,结果它返回了200。通过添加-H“User-Agent:Python-urllib/3.9”,我再次获得了403。看起来他们是在根据用户代理字符串进行过滤,以阻止人们浏览他们的网站。