我試圖提取紐約時報電影評論的正文,以便對它們進行一些語義分析。不幸的是,我的HTML + R + XML包技能還不足以完成工作。我可以使用NYT電影API的XML輸出來獲取電影細節,但我無法弄清楚如何使用文章API或直接網頁抓取,以便了解評論的正文。無法使用R XML包將文本從刮出的HTML頁面中拉出
工作代碼爲電影細節:
library(RCurl)
nyt.x.url<-'http://api.nytimes.com/svc/movies/v2/reviews/search.xml?query=The+Hangover&api-key=YOUR-OWN-FREE-API-KEY-GOES-HERE'
nyt.x.out<-getURLContent(nyt.x.url,curl=getCurlHandle())
library(XML)
a <- xmlTreeParse(nyt.x.url)
r <- xmlRoot(a)
# need to put the separate list items together into a mtrix, before they can be turned to a dataframe
nyt.df <- as.data.frame(stringsAsFactors=FALSE,
matrix(c(as.character(r[[4]][[1]][[1]][[1]])[6], # display name
as.character(r[[4]][[1]][[3]][[1]])[6], # rating - agrees with rotten tomatoes, but not imdb
as.character(r[[4]][[1]][[4]][[1]])[6], # is it a critics pick
as.character(r[[4]][[1]][[5]][[1]])[6], # is it a thousand best
as.character(r[[4]][[1]][[11]][[1]])[6], # opening date
as.character(r[[4]][[1]][[15]][[1]][[1]])[6]), # this is really the URL....
nrow=1,
ncol=6))
# now apply the right names
colnames(nyt.df) <- c("Title","MPAA-Rating", "Critics.Pick", "Thousand.Best", "Release.Date", "Article.URL")
我會再使用的電影細節這個數據幀,抓取的審查網頁,並試圖抓住的評論文章:
nyt.review.out<-getURLContent(as.character(nyt.df[6]),curl=getCurlHandle())
a2 <- htmlTreeParse(nyt.review.url)
但我無法弄清楚如何得到評論的全文。當我嘗試使用json API進行文章時,我遇到了同樣的問題(url調用api在下面)
nyt.review.url < - 'http://api.nytimes.com/svc/搜索/ V1 /條?格式= JSON &查詢=審查+在+宿醉& BEGIN_DATE = 20090605 & END_DATE = 20090606 & API密鑰= YOUR-OTHER-FREE-API-KEY-GOES-HERE」
任何幫助非常感謝,但您需要註冊您自己的API密鑰(我從代碼中刪除了我的密碼)
這改善了我的工作代碼,並且在這裏和那裏增加一個trycatch,會更好。謝謝。但是,我的問題是在倒數第二段中的代碼,它的格式不正確,我不能在我的iPad上更正。問題在於,我不能撕開HTML來分析評論的6個段落,這就是我所追求的。 (我想對電影評論進行一些情感分析) – 2012-02-17 06:59:12
@AndrewDempsey對不起,我不太關注。如果你問如何通過API來閱讀文章的全文,那麼我不知道。我的代碼做了一個屏幕刮(根據您的問題中的「直接網頁刮擦」)以獲得文章的正文(現在我已更新代碼以僅抓取段落,如果這是您的意思?): ) – 2012-02-17 09:38:26
(注意自己 - 不要在ipad上深夜閱讀代碼)... @TonyBreyal - 道歉,昨晚我誤解了一下代碼。都很好。謝了哥們。 – 2012-02-17 17:25:18