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

使用Puppeteer(Node.js)点击IMDB加载更多按钮失效求助

解决Puppeteer无法点击IMDB影片关联页面“加载更多”按钮的问题

直接用page.click('.ipc-see-more__button')无效,大概率是元素未完全加载、按钮不在视口内、选择器太宽泛命中多个元素,或是IMDB的事件绑定需要在浏览器上下文触发。试试下面的修复方案:

方案1:等待元素可交互 + 精准选择器

IMDB页面有多个“加载更多”按钮(对应不同分类),先通过精准选择器定位目标按钮,再等待它完全可见且可交互后点击:

const puppeteer = require('puppeteer');

const scrape = async function () {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    await page.goto('https://www.imdb.com/title/tt0090887/movieconnections/', { waitUntil: 'networkidle2' });

    // 针对Followed by分类的按钮,使用精准选择器
    const loadMoreBtnSelector = '.single-page-see-more-button-followed_by .ipc-see-more__button';
    
    // 等待按钮可见且可交互,超时设置为10秒
    await page.waitForSelector(loadMoreBtnSelector, { visible: true, timeout: 10000 });
    
    // 点击按钮
    await page.click(loadMoreBtnSelector);

    // 后续处理逻辑...
    // await browser.close();
};

scrape();

方案2:滚动到按钮位置再点击

如果按钮在当前视口外,Puppeteer的模拟点击可能失效,先滚动到元素位置:

// 在waitForSelector之后添加滚动代码
await page.evaluate(selector => {
    const btn = document.querySelector(selector);
    btn.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, loadMoreBtnSelector);

// 等待滚动完成后再点击
await page.waitForTimeout(500);
await page.click(loadMoreBtnSelector);

方案3:直接在浏览器上下文触发click事件

如果Puppeteer的模拟点击仍无效,直接调用元素原生的click()方法:

await page.evaluate(selector => {
    document.querySelector(selector).click();
}, loadMoreBtnSelector);

额外注意事项

  • 页面加载时用waitUntil: 'networkidle2'确保静态资源加载完成,避免元素未渲染。
  • 若需点击多个分类的按钮,循环遍历对应选择器即可,比如.single-page-see-more-button-featured_in对应Featured in分类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:26:16