[英]Using readHTMLTable with multiple tbody
假設我有一個包含多個<tbody>
的HTML表, 我們知道它是完全合法的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)
這阻止我直接在URL上使用readHTMLTable
來獲取這樣的表,並且也感覺不太健壯。
如果你查看readHTMLTable
getMethod(readHTMLTable, "XMLInternalElementNode")
的源代碼,它就包含了這一行
if (length(tbody))
node = tbody[[1]]
所以它有目的地設計為只選擇第一個tbody的內容。 另外?readHTMLTable
將功能描述為提供
用於從HTML文檔中的HTML表中提取數據的有些強大的方法
它被設計成一個實用功能。 當它工作時很棒,但你可能需要破解它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.