You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何使用pd.read_html无报错提取网页表格数据?

问题根因

pd.read_html()方法不支持直接传入BeautifulSoup返回的Tag类型对象,仅支持接收HTML字符串、本地文件路径、可访问的网络URL作为入参,参数类型不匹配触发了本次类型错误。

修复方案
  • 提取表格后先校验是否成功获取到目标表格节点,避免空值报错
  • 将获取到的表格Tag对象转为HTML字符串格式,再传入pd.read_html()解析
  • 由于pd.read_html()会返回页面中所有匹配表格组成的DataFrame列表,取列表第一个元素即为目标表格
完整修复后代码
import requests
from bs4 import BeautifulSoup
import pandas as pd

header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
}

url = "https://www.worldometers.info/coronavirus/#countries"
req = requests.get(url, headers=header)

# 校验请求是否成功
if req.status_code != 200:
    print("页面请求失败,请检查网络或请求头配置")
    exit()

# 提取目标表格节点
soup = BeautifulSoup(req.content, 'lxml')
tables = soup.find('table',{'id':'main_table_countries_today'})

# 校验表格是否成功提取
if not tables:
    print("未找到目标表格,请检查页面结构或节点ID是否变更")
    exit()

# 转成HTML字符串后传入pandas解析,取第一个表格即为目标数据
df = pd.read_html(str(tables))[0]
print(df)
运行效果

代码执行后会直接输出全球各国新冠疫情统计数据表格,包含累计确诊、死亡病例、康复病例、现有确诊等统计字段,匹配预期展示效果。

内容的提问来源于stack exchange,提问作者daniel malten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:54:03