R {xml_node} ke teks biasa sambil mempertahankan tag?

Saya ingin melakukan apa yang dilakukan xml2::xml_text() atau rvest::html_text() tetapi mempertahankan tagnya alih-alih menggantinya, misalnya. <br> dengan \n. Tujuannya adalah untuk mis. mengikis halaman web, mengekstrak node yang saya inginkan, dan menyimpan HTML biasa dalam sebuah variabel, seperti write_html() menyimpannya dalam sebuah file.

Bagaimana saya bisa melakukan ini?


person Harold Cavendish    schedule 14.09.2018    source sumber
comment
Saat meminta bantuan, Anda harus menyertakan contoh sederhana yang dapat direproduksi dengan masukan sampel dan keluaran yang diinginkan yang dapat digunakan untuk menguji dan memverifikasi solusi yang mungkin.   -  person MrFlick    schedule 14.09.2018
comment
@MrFlick Saya sadar, tapi di sini saya mengajukan pertanyaan yang sangat umum dan percaya bahwa deskripsi yang saya berikan sudah cukup. Solusi yang saya cari adalah satu fungsi yang sudah diterapkan di xml2, hanya tanpa membuang tag, atau apa yang dilakukan fungsi lain, hanya dengan output ke variabel lain, bukan file eksternal.   -  person Harold Cavendish    schedule 14.09.2018
comment
Jadi Anda ingin menyimpan XML sebagai string tanpa penguraian? Mengapa Anda tidak bisa membacanya sebagai string saja? Atau apakah Anda ingin melintasi/memodifikasi pohon dengan xml2 dan kemudian mendapatkan keluaran dari bagian tertentu sebagai string mentah yang belum diuraikan?   -  person divibisan    schedule 14.09.2018
comment
@divibisan Memang. Karena struktur datanya adalah daftar dengan pointer eksternal dan saya tidak tahu cara mengubahnya menjadi string.   -  person Harold Cavendish    schedule 14.09.2018


Jawaban (1)


Ironisnya, ternyata as.character() berfungsi dengan baik.

Karena itu:

library(rvest)
html <- read_html("http://stackoverflow.com")

res <– html %>%
         html_node("h1") %>%
         as.character()

> res

[1] "<h1 class=\"-title\">Learn, Share, Build</h1>"

Ini adalah keluaran yang diinginkan dalam kasus penggunaan saya saat ini.

Di sisi lain, sebagai perbandingan jika seseorang perlu menghapus tag:

res <- html %>%
         html_node("h1") %>%
         html_text()

> res
[1] "Learn, Share, Build"
person Harold Cavendish    schedule 15.09.2018