R {xml_node} เป็นข้อความธรรมดาในขณะที่รักษาแท็กไว้หรือไม่

ฉันต้องการทำสิ่งที่ xml2::xml_text() หรือ rvest::html_text() ทำอย่างแน่นอน แต่คงแท็กไว้แทนที่จะแทนที่ เช่น <br> กับ \n วัตถุประสงค์คือเพื่อเช่น ขูดหน้าเว็บ แยกโหนดที่ฉันต้องการ และจัดเก็บ HTML ธรรมดาในตัวแปร เหมือนกับที่ write_html() จะเก็บไว้ในไฟล์

ฉันจะทำเช่นนี้ได้อย่างไร?


person Harold Cavendish    schedule 14.09.2018    source แหล่งที่มา
comment
เมื่อขอความช่วยเหลือ คุณควรใส่ตัวอย่างที่ทำซ้ำได้ง่าย พร้อมอินพุตตัวอย่างและเอาต์พุตที่ต้องการ ซึ่งสามารถใช้เพื่อทดสอบและตรวจสอบวิธีแก้ปัญหาที่เป็นไปได้   -  person MrFlick    schedule 14.09.2018
comment
@MrFlick ฉันรู้ แต่ที่นี่ฉันกำลังถามคำถามทั่วไปมากและเชื่อว่าคำอธิบายที่ฉันให้ไว้น่าจะเพียงพอแล้ว วิธีแก้ปัญหาที่ฉันกำลังมองหาคือฟังก์ชันเดียวที่ใช้งานอยู่แล้วใน xml2 โดยไม่ต้องละทิ้งแท็กหรือสิ่งที่ฟังก์ชันอื่นทำเฉพาะกับเอาต์พุตไปยังตัวแปรอื่นแทนที่จะเป็นไฟล์ภายนอก   -  person Harold Cavendish    schedule 14.09.2018
comment
คุณต้องการที่จะเก็บ XML ไว้เป็นสตริงโดยไม่มีการแยกวิเคราะห์หรือไม่? ทำไมคุณไม่สามารถอ่านมันเป็นสตริงได้? หรือคุณต้องการที่จะสำรวจ/แก้ไขแผนผังด้วย xml2 แล้วรับเอาต์พุตของส่วนเฉพาะเป็นสตริงดิบที่ไม่ได้แยกวิเคราะห์   -  person divibisan    schedule 14.09.2018
comment
@divibsan แน่นอน เนื่องจากโครงสร้างข้อมูลเป็นรายการที่มีพอยน์เตอร์ภายนอก และฉันไม่ทราบวิธีแปลงเป็นสตริง   -  person Harold Cavendish    schedule 14.09.2018


คำตอบ (1)


น่าแปลกที่ปรากฎว่า as.character() ใช้งานได้ดี

ดังนั้น:

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

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

> res

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

นี่คือผลลัพธ์ที่ต้องการในกรณีการใช้งานปัจจุบันของฉัน

ในทางกลับกัน หากต้องการเปรียบเทียบหากต้องการถอดแท็ก:

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

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