Я хотел бы удалить данные с веб-страницы IMDB со списком рейтингов фильмов.
Я хотел бы сделать это для нескольких страниц, поэтому после удаления содержимого с первой страницы мне нужно открыть еще одну и повторить процесс очистки.
Начальная страница содержит 250 фильмов (это максимум, который можно отобразить), начиная с ранга 1 до 250. Следующая страница должна содержать 250 фильмов, начиная с 251 до 500.
Стартовый номер может быть передан в ссылке, но у меня есть проблема, чтобы правильно написать и использовать для цикла для передачи 1 при первом выполнении, а затем число увеличивается на 250.
Справочная информация:
Я пытался, если на основе значения j увеличить число на 250, но не совсем уверен, как это сделать правильно.
#install required packages
install.packages("rvest")
install.packages("RSelenium")
library(rvest)
library(RSelenium)
#open browser (Firefox in my case, but can be any, just change the value in line below from firefox to chrome, internet explorer)
rD <- rsDriver(browser=c("firefox"))
remDr <- rD[["client"]]
#set counter
counter=250
for (j in 1){
j<-j+counter
#set link for the webpage.
newURL<-"https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start="
startNumberURL<-paste0(newURL,j)
#open webpage in the browser
remDr$navigate(startNumberURL)
#read html code
strona_int<-read_html(startNumberURL)
#read rank section from the page
rank_data<-html_nodes(strona_int,'.text-primary')
#konwersja rankingu na text
rank_data<-html_text(rank_data)
#konwersja na numeric
rank_data<-as.numeric(rank_data)
}
#close browser
remDr$close()
#stop server
rD[["server"]]$stop()
Текущий результат:
нет сообщения об ошибке.
В цикле начальная ссылка должна быть:
https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start=1
Следующий:
https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start=251
Обновление
Спасибо! Похоже, это работает почти идеально.
ile<-seq(from=1, by=250, length.out = 3)
for (j in ile){
#open page in browser
newURL<-"https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start="
startNumberURL<-paste0(newURL,j)
Но теперь дополнительный вопрос, как правильно добавить его во фрейм данных?
#create dataframe
filmy_df_temp<-data.frame(Rank=rank_data)
filmy_df<-rbind(filmy_df_temp)
}
Но он добавляет только последнее исполнение.