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

使用BeautifulSoup爬取烂番茄单部电影全部影评的问题咨询

问题原因
  • 烂番茄影评页属于动态加载页面,初始渲染仅返回前19条影评,更多内容需要用户向下滚动时,浏览器通过AJAX异步请求加载后续数据,直接爬取初始HTML只能拿到首批内容
  • 你当前的代码本身也存在语法问题:
    • 调用逻辑缩进错误,url定义和后续函数调用写在了findReviews的return语句之后,永远不会执行
    • 变量名大小写不统一,定义的小写url,传参用了大写URL

解决方案

这里给你提供两种可行方案:

方案1:模拟浏览器滚动加载全量内容

使用Selenium自动化工具模拟用户滚动操作,触发所有影评加载完成后再提取内容,代码兼容性高、易上手。
首先安装依赖:

pip install selenium beautifulsoup4 pandas webdriver-manager

完整可运行代码:

from bs4 import BeautifulSoup
import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

def scrape_all_reviews(url, scroll_pause_time=2):
    # 初始化Chrome浏览器
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    driver.get(url)
    # 记录初始页面高度
    last_height = driver.execute_script("return document.body.scrollHeight")
    
    while True:
        # 滚动到页面最底部触发加载
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        # 等待接口返回、内容渲染完成
        time.sleep(scroll_pause_time)
        # 对比滚动前后的页面高度,高度无变化说明已经加载完所有影评
        new_height = driver.execute_script("return document.body.scrollHeight")
        if new_height == last_height:
            break
        last_height = new_height
    
    # 拿到完整页面源码解析
    soup = BeautifulSoup(driver.page_source, "html.parser")
    driver.quit()
    
    # 提取所有影评(优化了你的原有提取逻辑,无需遍历所有div)
    reviews = [ele.text.strip() for ele in soup.find_all("div", class_="the_review")]
    return pd.DataFrame(reviews, columns=['reviews'])

if __name__ == "__main__":
    target_url = "https://www.rottentomatoes.com/m/interstellar_2014/reviews"
    reviews_df = scrape_all_reviews(target_url)
    print(reviews_df)
    # 可自行保存到本地:reviews_df.to_csv("interstellar_reviews.csv", index=False)

方案2:直接调用AJAX接口拿数据

可以打开浏览器F12开发者工具的「网络」面板,筛选XHR请求,滚动页面时就能看到加载影评的异步接口,直接构造请求拿接口返回的JSON数据即可,该方案无需启动浏览器,运行效率更高。

注意事项
  • 控制请求/滚动频率,避免短时间高频请求被网站限制IP
  • 爬取内容仅限个人学习使用,请勿商用或批量传播

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:03