使用readHTMLTable与多个tbody

时间:2013-08-20 07:31:05

标签: html r

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

require(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)

阻止我直接在URL上使用readHTMLTable来获取这样的表格,并且感觉不太健壮。

1 个答案:

答案 0 :(得分:0)

如果您查看readHTMLTable getMethod(readHTMLTable, "XMLInternalElementNode")的来源,则其中包含

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

所以它的目的是只选择第一个tbody的内容。同样?readHTMLTable将功能描述为提供

  

从HTML文档中的HTML表中提取数据的一些强大的方法

它被设计为实用功能。它很棒,但它可能需要破解它。