【问题标题】:Cleaning web text using readLines and the tm-package in R使用 readLines 和 R 中的 tm-package 清理 Web 文本
【发布时间】:2020-06-05 10:35:14
【问题描述】:

我正在尝试使用readLines 函数删除网页上的正则表达式代码和数字。我正在为此使用unlist 函数。但是,我不确定如何删除数字。我正在考虑使用tm-package,但我似乎缺少格式转换。如何使用 tm 转换我的网页以删除数字等,或者是否有更简单的方法从文本中删除冗余?我希望将多个要阅读的网页串联起来,这样会很干净。

 library(rvest)
 library(tm)
 webpage <- readLines("https://www.sciencedaily.com/releases/2020/02/200219113746.htm", 
             encoding = "UCS-2LE")
 dirtytext <- unlist(strsplit(webpage,"\\r|\\n|\\t"))
 cleantext <- tm_map(dirtytext,removeNumbers)

最后一行给出了错误信息:

'UseMethod("tm_map", x) 中的错误: 没有适用于“字符”类对象的“tm_map”方法

【问题讨论】:

  • 您的意思是要删除 html 标签吗?阅读原始页面然后尝试清理它而不是使用专为解析 Web 内容而设计的包不是一个好主意。你已经加载了rvest,为什么不用呢?
  • 你在找什么样的文字信息?
  • H-1,谢谢。需要清理的不仅仅是 html 标签。我无法让 rvest 工作,所以最终使用了 readLines。但你可能是对的。我再试试 rvest。 jazzurro,我需要正文来运行频率、关联、情绪等。谢谢!

标签: r url nlp tm readlines


【解决方案1】:

我不确定您是否要包含 lede,但以下内容按段落返回故事(这会删除文本中包含的所有非故事元素,例如广告)。

library(rvest)

url <- "https://www.sciencedaily.com/releases/2020/02/200219113746.htm"

page <- read_html(url)

story <- page %>%
  html_nodes("div#text p") %>%  # use "div#story_text p" to include lede
  html_text

【讨论】:

  • 非常感谢H 1,它有效!我不熟悉管道,也没有完全理解 html_nodes 函数,但它现在应该可以正常工作了。
  • 我再次尝试使用没有 .htm 扩展名的网页,结果发现没有文本(字符:0)。不确定我是否应该为此使用不同的包或在 rvest 包中寻找解决方案?
  • 你应该留在rvest。这不是一刀切的任务。不同的页面可以有不同的结构,并且需要不同的选择器来解析。如果您在确定正确的选择器时遇到问题,您可能需要发布一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-10
  • 2013-04-10
  • 2014-08-19
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多