html_table()

[package] [rvest]

HTMLファイルから表(tableタグ)を読み取ってデータフレームにする

xmlfile.xhtmlが仮にあったとして、その中からtableを読み取って何かのデータを得たいとき。

xml2::xml_read("xmlfile.xhtml") %>%
rvest::html_text %>%
rvest::html_table -> dataframe.df

但し、いくつかの前提となる制約がある。

  1. テーブルは列や行が統合されていない(統合されていれば同じ要素をその数だけ加える)
  2. 見出しの行は一番上にある

さらに、もともとのテーブルがデータ処理用に縦横綺麗に作られているとは限りません。実は個々の処理が一番苦労する。

タグの編集は、タグをノードとして扱うよりは、as.characterでテキストとして扱うほうが手軽なこともある。

以下は、r-wakalangでill_identifiedさんに教わったもの

tables <- html %>%
 as.character %>%   #ここで文字型テキストに変換
 str_replace_all("</tr>\n<td", "</tr>\n<tr>\n<td") %>%  #不要なデータを編集を加える(その1)
 str_replace_all("<br>", ",") %>%    #不要なデータを編集を加える(その2)
 read_html() %>%  #HTML型のデータに戻す