处理来自网络抓取数据的字符串

时间:2015-11-13 04:54:10

标签: r string web-scraping rvest

我正在尝试从webpage中删除数据,但我无法操纵字符串。如果您访问the page,您会发现这是一个用法语写的网站。我试图以页面底部的表格格式获取数据。在法语中,千位分隔符为.spaces,用于the webpage

以下是废弃第二列中值的代码:

library(rvest)

link <- read_html("http://perspective.usherbrooke.ca/bilan/servlet/BMTendanceStatPays?langue=fr&codePays=NOR&codeTheme=1&codeStat=SP.POP.TOTL")

link %>%
   html_nodes(".tableauBarreDroite") %>%
   html_text() -> pop

head(pop)
[1] "3Â 581Â 239" "3Â 609Â 800" "3Â 638Â 918" "3Â 666Â 537" "3Â 694Â 339" "3Â 723Â 168"

pop向量中的值包含具有意外spaces的预期Â。我尝试了以下操作来移除spaces

new.pop <- gsub(pattern = " ", replacement = "", x = pop)

head(new.pop)
[1] "3Â 581Â 239" "3Â 609Â 800" "3Â 638Â 918" "3Â 666Â 537" "3Â 694Â 339" "3Â 723Â 168"

spaces变量中仍然存在new.pop。我还试图删除标签:

new.pop <- gsub(pattern = "\n", replacement = "", x = pop)

head(new.pop)
[1] "3Â 581Â 239" "3Â 609Â 800" "3Â 638Â 918" "3Â 666Â 537" "3Â 694Â 339" "3Â 723Â 168"

正如您所看到的,spaces并没有消失。在删除不需要的字符后,您是否知道如何将pop向量转换为数字向量?

1 个答案:

答案 0 :(得分:1)

只是提示,你应该使用它:

gsub(pattern="\\s",replacement="",x=pop) or
gsub(pattern=".\\s",replacement="@",x=pop)

因为空间是一个特殊的角色。

最好,

罗伯特