2013-11-01 43 views
0

我目前正試圖刮掉從我解析爲HTML文本樹如下: -提取文本有R

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上所產生的矢量,但是這失敗了。

​​

我的下一個嘗試是對在query.IMDB向量的個別點用grep: -

vect <- numeric(length(df.IMDB)) 

for (i in 1:length(df.IMDB)){ 

     vect[i] <- data[grep("Users rated this", "", df.IMDB)] 

    } 

但是這也引發了不關閉錯誤subsettable。

最後嘗試上述功能,無需data[]grep各地拋出

Error in df.IMDB[i] <- grep("Users rated this", "", df.IMDB[i]) : replacement has length zero 

實際上,我希望能最終取代,除了一些形式[0-9].[0-9]的給定文本字符串空格下面的一切,但我首先做一個簡單的版本來讓事情奏效。

任何人都可以建議我應該使用編輯中的每個點上的文字我query.IMDB矢量

+0

有_may_是一個API,[見這裏](http://stackoverflow.com/questions/1966503/does-imdb-provide-an-api)。 – halfer

+0

你想做什麼?你想提取什麼文字?你想閱讀收視率表嗎? – agstudy

+0

是的,我想編制一個評級表。 –

回答

1

沒有必要在這裏使用grep什麼功能(避免與HTML文件的正則表達式)。從XML包裝使用方便的功能readHTMLTable

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轉換爲數值。

+2

繁榮!頂級工作我的朋友。 –