我是网络爬虫的新手,所以我目前在如何将我爬取的数据存储到数据框中时遇到麻烦。
我想我需要先创建一个空列表,然后将所有列表存储到数据框中,但是我不确定如何在循环中执行该操作,也将没有数据的列表存储为NA
这是我的代码,用于抓取数据并将其存储到不同的列表中:
library(rvest)
library(dplyr)
title = c()
genre = c()
runtime = c()
imdb_rating = c()
votes_gross = c()
for (i in seq(2015, 2018, 1)) {
link <- paste0("https://www.imdb.com/search/title?year=",i,"&title_type=feature&sort=boxoffice_gross_us,desc")
top_movies <- read_html(link)
title_t <- top_movies %>% html_nodes(".lister-item-header") %>% html_text()
genre_t <- top_movies %>% html_nodes(".genre") %>% html_text()
runtime_t <- top_movies %>% html_nodes(".runtime") %>% html_text()
imdb_rating_t <- top_movies %>% html_nodes(".ratings-imdb-rating") %>% html_text()
votes_gross_t <- top_movies %>% html_nodes(".sort-num_votes-visible") %>% html_text()
title <- c(title, title_t)
genre <- c(genre, genre_t)
runtime <- c(runtime, runtime_t)
imdb_rating <- c(imdb_rating, imdb_rating_t)
votes_gross <- c(votes_gross, votes_gross_t)
}
此方法生成不一致的结果,因为某些电影没有评级或投票数据。因此,我不确定如何将它们设置为NA
并将所有数据存储到数据框中。