使用BeautifulSoup爬取篮球裁判信息遇AttributeError报错求助
问题解决:爬取Basketball Reference赛事裁判信息
错误原因
你的代码中soup.find(string = "Officials: ")返回了None,说明BeautifulSoup未找到匹配的文本内容,后续调用.next_sibling自然触发AttributeError。主要问题点包括:
- 请求方法写错:
requests.Get应为小写的requests.get,Python方法名区分大小写 - 直接匹配纯字符串易失败:页面内的"Officials: "并非独立纯文本,而是嵌套在特定标签中,单纯匹配字符串无法定位
- 未设置请求头:可能被网站反爬机制拦截,导致获取的页面内容不完整
修正后的代码
import requests from bs4 import BeautifulSoup # 设置请求头模拟浏览器,避免反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } url = "https://www.basketball-reference.com/wnba/boxscores/201506050CON.html" # 修正请求方法为小写get data = requests.get(url, headers=headers) soup = BeautifulSoup(data.text, 'html.parser') # 通过标签+文本内容的方式定位裁判信息容器 officials_container = soup.find(lambda tag: tag.name == 'div' and "Officials:" in tag.text) if officials_container: # 提取并清理裁判信息文本 refs = officials_container.text.replace("Officials:", "").strip() print(refs) else: print("未找到裁判信息")
关键说明
- 用
requests.get替代错误的requests.Get,符合Python方法命名规范 - 添加请求头模拟正常浏览器访问,避免被网站拦截
- 采用lambda表达式匹配包含目标文本的标签,比单纯匹配字符串更稳定,适配页面标签嵌套结构
内容的提问来源于stack exchange,提问作者kc_balr
相关产品推荐
相关产品推荐

