在刮擦时保留斜体字

时间:2018-06-13 09:50:05

标签: r rvest

我希望从在线留言板上收集一些消息。 目前我正在使用:

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>

还有更优雅的解决方案吗?

1 个答案:

答案 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> "