【发布时间】:2020-10-15 00:50:29
【问题描述】:
我想尝试从this website 中抓取所有表格。该网站包含多个10 表格。当我使用pd.read_html() 时,它只返回3 个表格,但我希望我的脚本返回所有表格。
我的脚本:
import pandas as pd
url = "https://aws.pro-football-reference.com/teams/mia/2000.htm"
df = pd.read_html(url)
len(df)
输出:
3
特别想要这张桌子:
如何使用pd.read_html() 获取所有表格?
【问题讨论】:
-
当我在网络浏览器中查看链接时,我看到了 3 个表格:一个标题为
Team Stats and Rankings,一个标题为Schedule & Game Results,另一个标题为Team Conversions。应该还有什么? -
@KarlKnechtel 先生,上面的链接为我的案例显示更多表格,如
Team Stats and Rankings、Schedule & Game Results、Team Conversions、Passing、Rushing & Receiving等等。甚至,就是上面的图片 -
@HumayunAhmadRajib 许多现代网站使用 JavaScript 动态加载内容。当您请求 HTML 时,它可能会返回到目前为止已加载的所有内容。我不确定
read_html()到底是如何工作的,但您可以探索其他选项来获取完全加载的 HTML,然后使用 pandas 进行处理。 -
@gallen 先生,我得到了三张桌子,为什么我不能得到其余的。
-
@HumayunAhmadRajib 因为在
read_html()发出的请求完成时,页面上只呈现了3 个表格。如果渲染过程的加载时间比爬虫等待读取的时间长,您将丢失数据。这就是为什么我建议不要依赖黑盒函数来做,而是自己刮然后处理。
标签: python python-3.x pandas web-scraping html-table