【发布时间】:2017-10-14 07:03:31
【问题描述】:
当我同时使用以下两个代码块时,我会得到“粘合”的单词,我的意思是没有用空格分隔但它们应该用空格分隔的单词,这是一个问题。在原始 HTML 中,它们似乎被 <b> 分隔,我无法处理这个问题。这两个块以不同的方式做同样的事情。
library(XML)
library(RCurl)
# Block 1---------
url <- "https://www.letras.mus.br/red-hot-chili-peppers/32739/"
u <- readLines(url)
h <- htmlTreeParse(file=u,
asText=TRUE,
useInternalNodes = TRUE,
encoding = "utf-8")
song <- getNodeSet(doc=h, path="//article", fun=xmlValue)
# Block 2---------
u <- "https://www.letras.mus.br/red-hot-chili-peppers/32739/"
h <- htmlParse(getURL(u))
song <- xpathSApply(h, path = "//article", fun = xmlValue)
返回类似:
[1] “有时我觉得我没有合作伙伴有时我感觉像我唯一的朋友是我居住的城市在城市angelsLonely 当我在一起哭泣时我在她的街道上开车因为她是我的伴侣我走过她的山丘因为她知道我是谁她看到了我的善行并且她在风中吻我我从不worryNow 那是个谎言我从来不想感觉像那天我做过但带我去我爱的地方带我一路走很难相信那有没有人在那里很难相信我一个人在......
【问题讨论】:
-
快速而肮脏的解决方法是将
u <- gsub("<br/>"," ",as.character(u))放在u <- readLines(url)行之后。它将用空格替换每个
。或者,如果您想将其保留为换行符而不是空格,也可以使用u <- gsub("<br/>","\n",as.character(u))。 -
@MattJewett 我也有类似的想法。无论如何,不管它是否脏,它都有效,非常感谢。
标签: html r web-scraping