【问题标题】:R {xml_node} to plain text while preserving the tags?R {xml_node} 到纯文本,同时保留标签?
【发布时间】:2019-02-19 15:01:13
【问题描述】:

我想做xml2::xml_text()rvest::html_text() 所做的事情,但保留标签而不是替换例如<br>\n。目标是例如抓取网页,提取我想要的节点,并将纯 HTML 存储在变量中,就像 write_html() 将其存储在文件中一样。

我该怎么做?

【问题讨论】:

  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。
  • @MrFlick 我知道,但在这里我问的是一个非常笼统的问题,因此相信我提供的描述就足够了。我正在寻找的解决方案是已经在xml2 中实现的单个函数,只是不丢弃标签,或者另一个函数的作用,只输出到另一个变量而不是外部文件。
  • 那么您想将 XML 保留为不解析的字符串吗?为什么你不能把它读成一个字符串?或者你想用xml2 遍历/修改树,然后将特定部分的输出作为原始的、未解析的字符串?
  • @divibisan 确实如此。因为数据结构是一个带有外部指针的列表,我不知道如何将其转换为字符串。

标签: r rvest xml2


【解决方案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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2019-11-05
    相关资源
    最近更新 更多