【问题标题】:R rvest keeping italics in text when scrapingR rvest 在抓取时在文本中保持斜体
【发布时间】:2023-09-28 13:40:01
【问题描述】:

我希望从在线留言板上抓取一些信息。 目前我正在使用:

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>

有没有更优雅的解决方案?

【问题讨论】:

    标签: r rvest


    【解决方案1】:

    您可以使用 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> "
    

    【讨论】:

      最近更新 更多