尝试通过Web抓取文本时character(0)的结果

时间:2019-06-15 17:36:16

标签: r web-scraping html-parsing rvest

我正在尝试自动从该站点https://www.livechatinc.com/typing-speed-test/#/抓取练习单词,但得到的结果是'character(o)'。

我用read_html读取了url,然后将html_nodes()中的x与练习单词的css选择器一起用于x,然后使用html_text进行了读取,但是每次都得到character(0)。

不知道我在做什么错,这是代码:

end

我只想把练习词放到r中,找出以后如何使其自动化。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

单词列表来自以下js文件:https://cdn.livechatinc.com/gtt/app.3.8.min.js

您可以尝试使用R进行正则表达式:

e\\.exports=\\{words:\\[(.*?)\\]

我使用python进行了快速测试:

import requests, re

r = requests.get('https://cdn.livechatinc.com/gtt/app.3.8.min.js')
p = re.compile(r'e\.exports={words:\[(.*?)\]')
words = p.findall(r.text)
print(words)

使用r

library(rvest)
library(stringr)
library(readr)
library(dplyr)
urlmatrix <- paste(readLines('https://cdn.livechatinc.com/gtt/app.3.8.min.js', warn=FALSE), 
                                collapse=" ", fileEncoding = "UTF-16") %>%
                                str_match(., 'e\\.exports=\\{words:\\[(.*?)\\]')
words <- strsplit(as.character(as.list(urlmatrix[,2])[[1]]), '","')
words[[1]][1] <- substring(words[[1]][1],2,nchar(words[[1]][1]))
words[[1]][length(words[[1]])] <- gsub('\\"', "", words[[1]][length(words[[1]])])