You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R网络爬取新手求助:如何用rvest定位IMDB电影标题的HTML节点

爬取IMDB Top250前50电影标题的R语言实现

首先修正你代码里的一个小问题:你目标是按评分降序抓取Top250,但代码里写的是sort=user_rating,asc(升序),得改成desc才符合需求。

怎么找正确的HTML节点?

打开目标网页,右键点击任意电影标题,选择「检查」(Chrome/Edge浏览器),就能看到对应的HTML结构。你会发现每个电影标题都嵌套在<h3 class="lister-item-header">标签下的<a>标签里,所以对应的节点选择器是.lister-item-header a。

完整可运行代码

library(rvest)
library(dplyr)

# 修正后的目标链接(按评分降序排序)
website <- "https://www.imdb.com/search/title/?sort=user_rating,desc&groups=top_250"
page <- read_html(website)

# 提取电影标题,使用正确的节点选择器
movie_titles <- page %>%
  html_nodes(".lister-item-header a") %>%
  html_text()

# 取前50条(该页面默认返回50条结果)
top50_titles <- head(movie_titles, 50)
print(top50_titles)

额外扩展:提取更多电影信息

如果想顺便抓取评分、上映年份,可以用这些选择器:

  • 评分:.ratings-imdb-rating strong
  • 年份:.lister-item-year

示例代码:

# 提取评分
movie_ratings <- page %>%
  html_nodes(".ratings-imdb-rating strong") %>%
  html_text() %>%
  as.numeric()

# 提取年份(提取纯数字部分)
movie_years <- page %>%
  html_nodes(".lister-item-year") %>%
  html_text() %>%
  stringr::str_extract("\\d{4}") %>%
  as.integer()

# 合并成结构化数据框
top50_movies <- data.frame(
  排名 = 1:50,
  标题 = top50_titles,
  评分 = movie_ratings[1:50],
  年份 = movie_years[1:50]
)

print(top50_movies)

内容的提问来源于stack exchange,提问作者androsrj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:12:33