【问题标题】:Extracting tables using pandas read_html function?使用 pandas read_html 函数提取表?
【发布时间】:2017-01-07 00:07:54
【问题描述】:

这是一个不寻常的问题。我正在尝试从某个网站中提取表格(由于安全原因,无法提供链接)。问题是该站点在通过网站访问时会加载该表,但是当我们在该表上的任何值/表上使用 inspect element 时,它是不可见的。它只显示<html>_</html>,其中包含一些脚本和链接。最初我尝试使用beautifulsoup 提取表,但没有成功。然后我用熊猫 pandas.read_html(html) 但该站点包含不止一个表,其输出是这样的

[     Code                   Name  
 0    A                      John   
 1    B                      Terry
 2    C                      Kitty 


    Column 1 Column 2    Column 3
0       1   0.6173661242    8
1       2   0.7232098163    20
2       3   0.9954581943    39
3       4   0.5595425507    18
4       5   0.9644025159    20
5       6   0.3914102544    29
6       7   0.0154642132    49

....

[873 rows x 3 columns],

0\n\t\t\t\t\t\t\t\t\t  
 0                                                  0    ]

然后我尝试了类似pandas.read_html(html, match="Column 1") 它返回此错误

ValueError: 没有找到匹配模式 'Column 1' 的表

知道如何使用 read_html 提取表格吗?

【问题讨论】:

  • 您可能可以索引到您想要的特定表。看起来你想要第二张桌子(?)所以你可能会做df = pd.read_table(url)[1]
  • 它只是输出整个网站。我认为该站点(出于安全考虑)使用其他方式来输出表格,而不是使用普通的表格 html 标记。
  • 你什么时候做pd.read_table(html)你得到的列表的长度是多少?
  • 它不显示任何长度它输出整个网站
  • 你说它输出类似的东西(在你的帖子中),这对我来说显然看起来像一个列表。将结果存储到变量并打印它的长度

标签: python html pandas web-scraping


【解决方案1】:

当从安全网站上抓取数据时,该网站可以使用 Java 加载表格,因此您永远不会看到 HTML 样式的代码。这可能就是 BeautifulSoup 没有返回任何东西的原因。

“里面的脚本和链接”看起来像 Java 吗?

也许看看Selenium?

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    相关资源
    最近更新 更多