如何将 {xml_node} 转换为纯文本并保留标签?

7
我希望能够像xml2::xml_text()rvest::html_text()一样进行操作,但保留标签而不是用\n等内容代替标签,以便从网页中提取想要的节点,并将纯HTML存储在一个变量中。这样就可以像write_html()函数将其写入文件一样进行处理。
请问如何实现这一操作?

在寻求帮助时,您应该包含一个简单的可重现示例,其中包括样本输入和期望输出,以便用于测试和验证可能的解决方案。 - MrFlick
1
@MrFlick 我知道,但这里我正在问一个非常普遍的问题,因此我认为我提供的描述应该足够了。我正在寻找的解决方案是一个已经在xml2中实现的单个函数,只是不丢弃标签,或者另一个函数所做的事情,只是将输出到另一个变量而不是外部文件。 - Harold Cavendish
所以你想将XML作为字符串保留而不进行解析?为什么不能直接将其读取为字符串?或者你想使用xml2遍历/修改树,然后将特定部分的输出作为原始未解析的字符串获取? - divibisan
@divibisan 确实。因为数据结构是带有外部指针的列表,我不知道如何将其转换为字符串。 - Harold Cavendish
1个回答

9

具有讽刺意味的是,事实证明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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接