很多网站的数据以 HTML 表格形式展示——股票行情、天气预报、统计年鉴、学校课表。用普通爬虫写正则或 XPath 去解析 HTML 表格非常麻烦,而 pandas 的 read_html 一行代码就能把网页上的所有表格抓下来。

一、read_html 基础用法

1. 最简单的用法

import pandas as pd

tables = pd.read_html("https://example.com/stats")
print(f"网页中共有 {len(tables)} 个表格")

read_html 会自动解析网页中的所有 <table> 标签,返回一个 DataFrame 列表。

2. 选择指定表格

# 按索引选择
df = tables[0]  # 第一个表格

# 按 CSS class 过滤
tables = pd.read_html(url, attrs={"class": "data-table"})

# 按 id 过滤
tables = pd.read_html(url, attrs={"id": "table1"})

3. 保存到 Excel

df = tables[0]
df.to_excel("股票数据.xlsx", index=False)

二、实战:抓取股票数据

import pandas as pd

url = "https://example.com/stock"
tables = pd.read_html(url)

# 找到股票行情表
stock_df = tables[0]

# 查看前几行
print(stock_df.head())

# 保存
stock_df.to_excel("股票行情.xlsx", index=False)

三、注意事项

read_html 依赖 lxml 或 html5lib 解析器:
  pip install lxml html5lib

编码问题指定:
  pd.read_html(url, encoding="utf-8")

表格太多时指定只取前 N 个:
  pd.read_html(url, match="股票")  # 匹配包含"股票"的表格

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!

更多推荐