使用R和rvest来抓取许多页面的网站

时间:2018-01-23 21:27:08

标签: r function web-scraping rvest

我正试图从RDB中的一个数据框(称为IMDB数据)中的rvest中提取一些电影。我尝试在我的上调试,但它不起作用。如果有人知道更好的方式或其他方式将页面的数量添加到URL,我将感激不尽。

我的问题是,当我尝试运行“%d ”定义的许多页面的代码时,出现错误:

Error in data.frame(title = page %>% html_nodes("h3 a") %>% html_text(),  : 
  arguments imply differing number of rows: 103, 100, 93, 308, 110, 205, 201, 200, 87

我的代码如下:

install.packages("rvest")
install.packages("xml2")
install.packages("purr")
install.packages("dplyr")
library(xml2)
library(rvest)
library(dplyr)
library(purrr)


imdb <- read_html("http://www.imdb.com/search/title?count=100&release_date=2017,2017&title_type=feature&page=%d&sort=moviemeter,asc&ref_=adv_nxt")

map_df(1:100, function(i){

  page <- read_html(sprintf(imdb,i))

  data.frame(title = page %>% html_nodes("h3 a")%>%html_text(),
             genre = page%>%html_nodes(".genre")%>%html_text(),
             PG = page%>%html_nodes(".certificate")%>%html_text(),
             rating = page%>%html_nodes(".ratings-imdb-rating")%>%html_text(),
             director = page%>%html_nodes(".lister-item-content a:nth-child(1)")%>%html_text(),
             Year = page%>%html_nodes(".text-muted.unbold")%>%html_text(),
             Actor1= page%>%html_nodes(".ghost+ a")%>%html_text(),
             Actor2= page%>%html_nodes("a:nth-child(4)")%>%html_text(),
             Actor3= page%>%html_nodes("a:nth-child(5)")%>%html_text(),
             Actor4= page%>%html_nodes("a:nth-child(6)")%>%html_text(),
             Gross = page%>%html_nodes(".sort-num_votes-visible span:nth-child(2)")%>%html_text(),
             Votes = page%>%html_nodes(".ghost~ .text-muted+ span")%>%html_text()

  )

}) -> imdb_data

提前致谢, 乔治

0 个答案:

没有答案