从IMDB中使用rvest刮取多个页面

从IMDB中使用rvest刮取多个页面,r,R,因此,我在这里尝试从IMDB链接中删除数据: 我想用下面的代码来获取运行时和标题数据。但是,我想知道如何对多个其他页面执行相同的操作?我试着做一个for循环,但我不知道如何将它合并到我的代码中。模式如下: https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=101&ref_=adv_prv https://www.imdb.com/search/title

因此,我在这里尝试从IMDB链接中删除数据:

我想用下面的代码来获取运行时和标题数据。但是,我想知道如何对多个其他页面执行相同的操作?我试着做一个for循环,但我不知道如何将它合并到我的代码中。模式如下:

https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=101&ref_=adv_prv
https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=201&ref_=adv_nxt
https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=301&ref_=adv_nxt
我的代码:

url <- 'https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=101&ref_=adv_prv'
    webpage <- read_html(url)

titlehtml <- html_nodes(webpage,'.lister-item-header a')
title <- html_text(titlehtml)


runtimehtml <- html_nodes(webpage,'.text-muted .runtime')
runtime <- html_text(runtimehtml)
runtime<-gsub(" min","",runtime)# removing mins and converting it to numerical
runtime<-as.numeric(runtime)
url试试这个:

urls <- c("https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=101&ref_=adv_prv",
      "https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=201&ref_=adv_nxt",
      "https://www.imdb.com/search/title?release_date=2010-01-01,2017-12-31&count=100&start=301&ref_=adv_nxt")`

results_list <- list()

for(.page in seq_along(urls)){
  webpage <- read_html(urls[[.page]])
  titlehtml <- html_nodes(webpage,'.lister-item-header a')
  title <- html_text(titlehtml)
  runtimehtml <- html_nodes(webpage,'.text-muted .runtime')
  runtime <- html_text(runtimehtml)
  runtime <- gsub(" min","",runtime)
  results_list[[.page]] <- data.frame(title = title,
                                  runtime = as.numeric(runtime)
                                  )
}

final_results <- plyr::ldply(results_list)

url您的for循环是什么样子的?它到底是怎么不起作用的?我试过这样的方法:for(我在seq(101:901,by 100)中){url首先,我会将代码编辑到您的问题中,以便正确格式化。但是,这里想要的结果是什么?循环运行时应该存在什么?抱歉,我忘了添加,我想将其放入数据框:movies_Dfscrawing IMDB违反亚马逊条款和条件,IMDB也有一个健壮的robots.txt。有人知道吗谁帮助你可能会受到与你相同的IP禁令、罚款和/或处罚。谢谢你,这似乎有效,因为我是R新手,还有一个问题。如何向结果列表中添加额外的列?例如,如果我想删除额外的数据,而不是运行时将其存储在新列中。你可以在后面加一个逗号来添加另一列
as.numeric(运行时)
然后编写类似于
my_new_column=some_value
的内容。一旦你让for循环做了你想做的一切,我将探索简化你的代码,并使用类似于
lappy
purr::map
的内容。这些通常会比for循环快,但是for循环是一个很好的开始选择非常感谢。现在最后一个问题是,当我尝试将不同的行放入数据帧中时,会出现不同的行,因此不起作用。我如何将空值改为“NA”呢?我没有遇到您在示例脚本中提到的问题。因此,我需要更多信息(示例代码)为了帮助你,请看我下面的帖子: