簡體   English   中英

使用readHTMLTable與多個tbody

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM