简而言之:大多数 HTML 表格都可以通过一行代码进行抓取 pandas.read_html。当表格分页、由 JavaScript 渲染或包含合并的表头时,请切换至 Requests + BeautifulSoup 或 Playwright 等无头浏览器。本指南为您提供了决策矩阵、三种方法的实操代码,以及将抓取的行转换为可直接用于数据处理管道的数据的清理步骤。表格数据在公共网络中无处不在,从维基百科的信息框和股票筛选器,到政府统计数据、体育数据以及产品对比页面。如果你懂得如何使用 Python 抓取 HTML 表格,就能在几分钟内将这些行数据转换为干净的 DataFrame、JSON 文档,或存储在自己的数据库中。
但问题在于,HTML表格是一个看似宽泛却暗藏玄机的类别。有些表格结构清晰,位于 <table> 标记中,pandas 只需一行代码即可解析。还有些则是手工编写的 <div>,分页跨越数十个页面,或者只有在浏览器中运行 JavaScript 后才会填充数据。一种在维基百科上完美运行的方法,在单页应用中可能会悄无声息地返回零行。
本指南将详细介绍三种 Python 实现方法,并围绕两个实际问题展开:您应该选择哪种方法?以及当网站在下个季度更改标记时,如何确保您的爬虫继续正常运行?




