我希望从在线留言板上收集一些消息。 目前我正在使用:
html_nodes(conv,'.talk-post.message') %>%
html_text(trim = TRUE)
对于消息:
我现在回来慢慢恢复速度。
这给出了: " \ n我现在回来慢慢恢复速度。\ n"
哪个工作正常,但删除所有html格式。我想保留文本在哪里有斜体标签的指示(类似于下划线和粗体)。
我很感激我可以使用toString.XMLNode,但是这会保留所有html标签,而不仅仅是所需的三个标签。
"{xml_nodeset (1)}\n[1] <div class=\"talk-post message\">\\n<p><i>I'm back now and slowly getting back to speed.</i><br>
还有更优雅的解决方案吗?
答案 0 :(得分:0)
您可以使用XML库获取div中的所有字符串。
> library(XML)
> txtNode <- "<div><i>Hello</i></div><div><b>World</b></div><div><b><i>!</i></b></div>"
> html <- htmlParse(txtNode)
> html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<div><i>Hello</i></div>
<div><b>World</b></div>
<div><b><i>!</i></b></div>
</body></html>
>
> lNode <- getNodeSet(html, "//div")
> lNode
[[1]]
<div>
<i>Hello</i>
</div>
[[2]]
<div>
<b>World</b>
</div>
[[3]]
<div>
<b>
<i>!</i>
</b>
</div>
attr(,"class")
[1] "XMLNodeSet"
>
> lapply(lNode, function(x) toString.XMLNode(x[[1]]))
[[1]]
[1] "<i>Hello</i> "
[[2]]
[1] "<b>World</b> "
[[3]]
[1] "<b>\n <i>!</i>\n</b> "