2016-12-21 4 views
-1

Я новичок в веб-соскабливании и надеюсь использовать его для сентиментального анализа. Я успешно отказался от первых 10 обзоров. В течение 280 других отзывов я не решался повторить следующий процесс более 20 раз ... Мне было интересно, есть ли пакет/функция, позволяющая мне более легко очистить все отзывы? Спасибо!Как очистить все обзоры фильмов от IMDB с помощью rvest

library(rvest) 
library(XML) 
library(plyr) 
HouseofCards_IMDb <- read_html("http://www.imdb.com/title/tt1856010/reviews?ref_=tt_urv") 

#Used SelectorGadget as the CSS Selector 
reviews <- HouseofCards_IMDb %>% html_nodes("#pagecontent") %>% 
html_nodes("div+p") %>% 
html_text() 

#perfrom data cleaning on user reviews 
reviews <- gsub("\r?\n|\r", " ", reviews) 
reviews <- tolower(gsub("[^[:alnum:] ]", " ", reviews)) 
sapply(reviews, function(x){}) 
print(reviews) 

ответ

2

Добро пожаловать в SO.

Если вы перейдете на вторую страницу отзывов, вы увидите, как изменяется URL от http://www.imdb.com/title/tt1856010/reviews до http://www.imdb.com/title/tt1856010/reviews?start=10.

За последнюю страницу: http://www.imdb.com/title/tt1856010/reviews?start=290.

Все, что вам нужно сделать, это цикл по страницам:

result <- c() 
for(i in c(1, seq(10, 290, 10))) { 
    link <- paste0("http://www.imdb.com/title/tt1856010/reviews?start=",i) 
    HouseofCards_IMDb <- read_html(link) 

    # Used SelectorGadget as the CSS Selector 
    reviews <- HouseofCards_IMDb %>% html_nodes("#pagecontent") %>% 
    html_nodes("div+p") %>% 
    html_text() 

    # perfrom data cleaning on user reviews 
    reviews <- gsub("\r?\n|\r", " ", reviews) 
    reviews <- tolower(gsub("[^[:alnum:] ]", " ", reviews)) 
    sapply(reviews, function(x){}) 
    result <- c(result, reviews) 
} 

Обратите внимание, что мы начинаем с http://www.imdb.com/title/tt1856010/reviews?start=1, который похож на http://www.imdb.com/title/tt1856010/reviews.

Смежные вопросы