pd.read_html匹配不到表格时返回None失败,报错ValueError
解决pd.read_html查找指定表格时的ValueError问题
问题根源
你的代码报错是因为pd.read_html()在没有匹配到指定表格时,不会返回空列表,而是直接抛出ValueError异常,所以你写的if pd.read_html(...) else None逻辑根本没机会执行,直接触发了报错。
修正后的代码
要实现“找不到返回None,找到则输出表格”的需求,应该用try-except块捕获异常:
import pandas as pd main_url = 'https://fbref.com/en/comps/9/2000-2001/2000-2001-Premier-League-Stats' try: # 尝试读取匹配的表格 squad_advanced_goalkeeping = pd.read_html(main_url, match='Squad Advanced Goalkeeping')[0] # 找到表格则打印 print(squad_advanced_goalkeeping) except ValueError: # 未找到表格时返回None squad_advanced_goalkeeping = None print("未找到匹配的表格,返回None")
补充说明
- 原网页中的'Squad Advanced Goalkeeping'表格可能需要检查是否存在拼写错误,或者该页面是否真的包含这个表格——你可以手动打开网页确认表格的准确标题,确保
match参数的字符串和表格标题完全一致(注意大小写、空格)。 - 如果网页有反爬机制,可能需要添加请求头模拟浏览器访问,比如:
import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'} response = requests.get(main_url, headers=headers) squad_advanced_goalkeeping = pd.read_html(response.text, match='Squad Advanced Goalkeeping')[0]
不过先优先确认表格标题是否正确,再考虑反爬问题。
内容的提问来源于stack exchange,提问作者beridzeg45
相关产品推荐
相关产品推荐

