html - 将 readHTMLTable 与多个 tbody 一起使用

标签 html r

假设我有一个包含多个 <tbody> 的 HTML 表格,这we know is perfectly legal HTML , 并尝试用 readHTMLTable 读取它如下:

library(XML)
table.text <- '<table>
  <thead>
    <tr><th>Col1</th><th>Col2</th>
  </thead>
  <tbody>
    <tr><td>1a</td><td>2a</td></tr>
  </tbody>
  <tbody>
    <tr><td>1b</td><td>2b</td></tr>
  </tbody>
</table>'
readHTMLTable(table.text)

我得到的输出只取第一个 <tbody>元素:

$`NULL`
  Col1 Col2
1   1a   2a

并忽略其余部分。这是预期的行为吗? (我在文档中找不到任何提及。)访问整个表的最灵活、最可靠的方法是什么?

我正在使用

table.text <- gsub('</tbody>[[:space:]]*<tbody>', '', table.text)
readHTMLTable(table.text)

这会阻止我使用 readHTMLTable直接在 URL 上获取这样的表格,而且感觉不是很健壮。

最佳答案

如果您查看 readHTMLTable getMethod(readHTMLTable, "XMLInternalElementNode") 的源代码,它包含行

    if (length(tbody)) 
        node = tbody[[1]]

所以特意设计成只选取第一个tbody的内容。此外,?readHTMLTable 将函数描述为提供

somewhat robust methods for extracting data from HTML tables in an HTML document

它被设计成一个效用函数。它在工作时很棒,但您可能需要绕过它。

关于html - 将 readHTMLTable 与多个 tbody 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329325/

相关文章:

html - 浏览器会解析/预渲染/绘制显示:none HTML?

html - 使网格根据需要添加新列

html - 使用 bootstrap 创建这个布局

javascript - 将动态变化的 R htmlwidget 嵌入到网页中

python - 在 R 中用 python 重写 t 检验的问题

r - 为 hist() 创建自定义 x 轴标签

json - 使用 ggplot2、plotly 和 ggplotly 创建桑基图

html - 如何在 _tk 主题中找到一个类以将其删除?

javascript - jQuery 仅应用于单个按钮,而不是它的所有实例

r - gt 表中的十进制对齐数字列