R - цикл для правильной передачи переменной в ссылку - PullRequest
0 голосов
/ 11 июля 2019

Я хотел бы удалить данные с веб-страницы 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) 
} 

Но он добавляет только последнее исполнение.

...