假设我有一个包含多个<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
来获取这样的表格,并且感觉不太健壮。
答案 0 :(得分:0)
如果您查看readHTMLTable
getMethod(readHTMLTable, "XMLInternalElementNode")
的来源,则其中包含
if (length(tbody))
node = tbody[[1]]
所以它的目的是只选择第一个tbody的内容。同样?readHTMLTable
将功能描述为提供
从HTML文档中的HTML表中提取数据的一些强大的方法
它被设计为实用功能。它很棒,但它可能需要破解它。