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

如何使用Python API采集烂番茄Top25动作冒险电影的指定字段数据

实现指导

优先方案:使用官方API实现(符合你的要求)

你当前直接请求网页HTML的方式属于网页爬虫,不符合你要求的必须用API实现的规则,而且稳定性差。烂番茄官方提供了结构化的API接口,不需要自行解析DOM元素,调用即可直接拿到所需的所有字段。
操作步骤:

  • 首先申请烂番茄公开API的调用密钥,获取后替换代码中的API_KEY占位符
  • 调用动作冒险类Top100榜单接口,返回JSON格式数据直接取前25条即可
  • 参考实现代码:
import requests

# 替换为你自己申请的API密钥
API_KEY = "YOUR_API_KEY"
request_url = f"https://api.rottentomatoes.com/api/public/v1.0/lists/movies/top_100_action_adventure.json?apikey={API_KEY}"

resp = requests.get(request_url)
if resp.status_code == 200:
    movie_list = resp.json()["movies"]
    # 取前25部电影
    for movie in movie_list[:25]:
        rank = movie["rank"]
        critic_score = f"{movie['ratings']['critics_score']}%"
        full_title = f"{movie['title']} ({movie['year']})"
        review_count = movie["ratings"]["critics_review_count"]
        print(rank, critic_score, full_title, review_count)

临时方案:解析现有HTML返回

如果你暂时无法申请API密钥,需要从你当前拿到的HTML文本中提取数据,可以使用BeautifulSoup库做DOM解析,参考代码如下:

import requests
from bs4 import BeautifulSoup

page_url = "https://www.rottentomatoes.com/top/bestofrt/top_100_action__adventure_movies/"
resp = requests.get(page_url)
soup = BeautifulSoup(resp.text, "html.parser")

# 取表格前26行,跳过表头
for idx, row in enumerate(soup.select("table tr")[1:26]):
    rank = row.select_one(".bold").text.strip().rstrip(".")
    score = row.select_one(".tMeterScore").text.strip()
    title = row.select_one("a.unstyled.articleLink").text.strip()
    review_count = row.select_one(".right.hidden-xs").text.strip()
    print(f"排名:{rank} | 评分:{score} | 标题:{title} | 评论数:{review_count}")

注意:该方案依赖页面的DOM结构和类名规则,只要网站更新页面结构,代码就会失效,仅可临时使用,优先选择API方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:18:04