【问题标题】:Read mutiple html links with rvest使用 rvest 读取多个 html 链接
【发布时间】:2021-11-17 07:23:05
【问题描述】:

我正在尝试从 IMDB 中抓取信息,但遇到了一些我不知道如何解决的问题。我成功抓取了标题、年份、评级等,但是当我尝试抓取演员姓名时,我首先需要进入每部电影的链接并从那里进入完整的演员页面进行抓取。

read_html 函数不允许我读取多个 html,我不确定我可以使用什么其他函数。

这是我的代码

library(rvest)
library(dplyr)

link = "https://www.imdb.com/search/title/?title_type=feature&num_votes=25000,&genres=adventure&sort=user_rating,desc"
page = read_html(link)

name = page %>% html_nodes(".lister-item-header a") %>% html_text()
year = page %>% html_nodes(".text-muted.unbold") %>% html_text()
rating = page %>% html_nodes(".ratings-imdb-rating strong") %>% html_text()
synopsis = page %>% html_nodes(".ratings-bar+ .text-muted") %>% html_text()

movie_links = page %>% html_nodes(".lister-item-header a") %>%
  html_attr("href") %>% paste("https://www.imdb.com", ., sep="")

castlink <- gsub("\\?ref_=adv_li_tt", "fullcredits?ref_=tt_cl_sm", movie_links)
cast_page <-read_htmls(castlink)

我为“castlink”中的所有 50 部电影演员链接创建了 castlink

感谢您向我解释。我很感激你!

【问题讨论】:

    标签: r web-scraping rvest


    【解决方案1】:

    您可以将演员页面阅读放在一个循环中:

    casts <- vector(mode="list", length=length(castlink))
    for(i in 1:length(castlink)){
      cast_page <- read_html(castlink[i])  
      casts[[i]] <- cast_page %>% 
        html_nodes(css=".cast_list > tr > td:nth-child(2) > a:nth-child(1)") %>% 
        html_text() %>% 
        trimws() %>% 
        gsub("\\n", "", .)
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 2015-04-28
      • 1970-01-01
      • 2017-10-11
      • 2016-05-16
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      相关资源
      最近更新 更多