3

multiple を持つ HTML テーブルがあり<tbody>、これは完全に正当な 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おり、また、あまり堅牢ではないと感じています。

4

1 に答える 1

0

ソースを見ると、次readHTMLTable getMethod(readHTMLTable, "XMLInternalElementNode")の行が含まれています

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

そのため、最初の tbody のコンテンツのみを選択するように意図的に設計されています。?readHTMLTableを提供する機能についても説明します。

HTML ドキュメント内の HTML テーブルからデータを抽出するためのやや堅牢な方法

ユーティリティ関数として設計されています。それが機能するときは素晴らしいですが、ハックする必要があるかもしれません。

于 2013-08-20T08:07:29.243 に答える