我目前正在尝试从我解析的HTML树中抓取文本,如下所示: -
require(RCurl)
require(XML)
query.IMDB <- getURL('http://www.imdb.com/title/tt0096697/epdate') #Simpsons episodes, rated and ordered by broadcast date
names(query.IMDB)
query.IMDB
query.IMDB <- htmlParse(query.IMDB)
df.IMDB <- getNodeSet(query.IMDB, "//*/div[@class='rating rating-list']")
我的第一次尝试只是在结果向量上使用grep,但这失败了。
data[grep("Users rated this", "", df.IMDB)]
#Error in data... object of type closure is not subsettable
我的下一次尝试是在query.IMDB向量中的各个点上使用grep: -
vect <- numeric(length(df.IMDB))
for (i in 1:length(df.IMDB)){
vect[i] <- data[grep("Users rated this", "", df.IMDB)]
}
但是这也会引发闭包而不是子例化错误。
最后在data[]
投掷
grep
的上述函数
Error in df.IMDB[i] <- grep("Users rated this", "", df.IMDB[i]) : replacement has length zero
我实际上希望最终替换除了带有空格的给定文本字符串之后的一些形式[0-9].[0-9]
之外的所有内容,但是我正在做一个更简单的版本以使该工作正常工作。
任何人都可以建议我应该使用什么函数来编辑查询中每个点的文本.IMDB向量
答案 0 :(得分:1)
此处无需使用grep
(AVoid正则表达式与HTML文件)。使用readHTMLTable
包中的便捷功能XML
:
library(XML)
head(readHTMLTable('http://www.imdb.com/title/tt0096697/epdate')[[1]][,c(2:4)])
Episode UserRating UserVotes
1 Simpsons Roasting on an Open Fire 8.2 2,694
2 Bart the Genius 7.8 1,167
3 Homer's Odyssey 7.5 1,005
4 There's No Disgrace Like Home 7.9 1,017
5 Bart the General 8.0 992
6 Moaning Lisa 7.4 988
这会为您提供评分表,...也许您应该将UserVotes转换为数字。