R でrvestを使用して Web ページをスクレイピングし、 node からに相当するものを抽出しinnerHTML
たいと思います。特に、適用する前に改行を改行に変更しhtml_text
ます。
必要な機能の例:
library(rvest)
doc <- read_html('<html><p class="pp">First Line<br />Second Line</p>')
innerHTML(doc, ".pp")
次の出力を生成します。
[1] "<p class=\"pp\">First Line<br>Second Line</p>"
これにより、次のrvest 0.2
方法で達成できますtoString.XMLNode
# run under rvest 0.2
library(XML)
html('<html><p class="pp">First Line<br />Second Line</p>') %>%
html_node(".pp") %>%
toString.XMLNode
[1] "<p class=\"pp\">First Line<br>Second Line</p>"
新しいものでは、rvest 0.2.0.900
これはもう機能しません。
# run under rvest 0.2.0.900
library(XML)
html_node(doc,".pp") %>%
toString.XMLNode
[1] "{xml_node}\n<p>\n[1] <br/>"
必要な機能は、現在依存しているwrite_xml
パッケージの関数で一般的に利用できます-ファイルへの書き込みを主張する代わりに、その出力を変数に与えることができれば。(aも受け付けません)。xml2
rvest
write_xml
textConnection
回避策として、一時的にファイルに書き込むことができます:
# extract innerHTML, workaround: write/read to/from temp file
html_innerHTML <- function(x, css, xpath) {
file <- tempfile()
html_node(x,css) %>% write_xml(file)
txt <- readLines(file, warn=FALSE)
unlink(file)
txt
}
html_innerHTML(doc, ".pp")
[1] "<p class=\"pp\">First Line<br>Second Line</p>"
これにより、たとえば、改行タグを改行文字に変換できます。
html_innerHTML(doc, ".pp") %>%
gsub("<br\\s*/?\\s*>","\n", .) %>%
read_html %>%
html_text
[1] "First Line\nSecond Line"
rvest
、xml2
、XML
または他のパッケージの既存の関数でこれを行うより良い方法はありますか? 特にハードディスクへの書き込みは避けたいです。