【发布时间】:2022-12-31 22:55:48
【问题描述】:
简而言之,我想从这个site 中抓取有关电影的信息。我正在使用 Selector Gadget 来抓取它,我写下了这段代码:
library(dplyr)
library(tidyverse)
library(rvest)
library(readr)
library(purrr)
link = "https://www.imdb.com/search/title/?title_type=feature&num_votes=25000,&genres=adventure&sort=user_rating,desc"
page = read_html(link)
film_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()
gross_income %>% html_nodes(".ghost~ .text-muted+ span") %>% html_text()
duration = page%>% html_nodes(".runtime") %>% html_text()
IMDB_Adventure_Movies_Rank = data.frame(film_name, year, rating, duration, gross_income, stringsAsFactors = FALSE)
R控制台给出以下错误:
Error in data.frame(film_name, year, rating, duration, gross_income, stringsAsFactors = FALSE) :
gli argomenti implicano un numero differente di righe: 50, 44
错误是因为在该网站上,50 部影片中有 6 部没有报告收入。
我试过这个解决方案,但是值没有按正确的顺序排列,因为 R 为每部电影分配了错误的收入
length(gross_income) = length(film_name)
我的问题是:如果电影没有报告收入,我如何创建一个表,R 返回 NA 或 null,而不是给我错误?
我看到有人遇到了同样的问题,解决方案是使用purrr包和possibly()函数。但是,我是 R 的新手,我无法理解答案以及如何使用possibly()。
【问题讨论】:
标签: r dataframe web-scraping rvest