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

使用Puppeteer无法抓取IMDB电影名称的技术求助

解决Puppeteer无法获取IMDB电影名称的问题

你的代码报错是因为IMDB的反爬机制识别了无头浏览器,导致页面未加载出目标元素,或是页面还没渲染完成就执行了元素查找操作。可以通过以下调整解决:

  • 设置真实浏览器的User-Agent:让无头浏览器的请求更接近普通用户访问
  • 等待目标元素渲染完成:避免在元素还未出现时就执行查找
  • 调整页面加载等待策略:确保页面资源加载充分

修改后的代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ 
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox'] // 部分环境需加此参数规避权限问题
  });
  const page = await browser.newPage();
  
  // 设置Chrome浏览器的User-Agent,模拟真实访问
  await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36');
  
  await page.goto('https://www.imdb.com/title/tt0111161/', {
    waitUntil: 'networkidle2' // 等待网络空闲,保证页面加载更完整
  });

  // 等待目标元素出现,超时时间设为10秒
  await page.waitForSelector('h1[data-testid="hero-title-block__title"]', { timeout: 10000 });
  
  const movieName = await page.$eval('h1[data-testid="hero-title-block__title"]', el => el.textContent.trim());
  console.log('电影名称:', movieName);

  await browser.close();
})();

额外注意事项:

  • 如果问题依旧,可尝试将headless: true改为headless: 'new'(Puppeteer新版本的无头模式更贴近真实浏览器)
  • 确保你的网络环境可以正常访问IMDB页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 16:27:23