使用pd.read_html解析维基百科表格时出现ValueError报错如何解决
问题原因
该报错由维基百科可排序表格自带的data-sort-value自定义属性导致。pandas解析HTML表格时,会误将部分暴露的属性内容识别为单元格的实际文本,尝试转换为整数时触发格式错误。你不需要修改维基原页面布局,仅需清理本地解析得到的BeautifulSoup对象即可解决问题。
修复后的完整代码
import requests from bs4 import BeautifulSoup import pandas as pd wikiurl = 'https://en.wikipedia.org/wiki/List_of_UFC_events' response = requests.get(wikiurl) soup = BeautifulSoup(response.text, 'html.parser') table = soup.find('table', id="Past_events") # 清理所有单元格的data-sort-value属性 for cell in table.find_all(["th", "td"]): if "data-sort-value" in cell.attrs: del cell["data-sort-value"] # 读取处理后的表格,read_html返回列表取第一个元素即为目标DataFrame df = pd.read_html(str(table))[0]
补充说明
- 除了
data-sort-value,如果遇到其他维基表格自定义属性干扰解析,也可以用同样的方法批量删除对应属性后再解析 - 如果需要保留排序值做额外处理,可以在删除属性前先将值提取出来存储为单独的列使用
内容的提问来源于stack exchange,提问作者HansDieter88
相关产品推荐
相关产品推荐

