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

使用Puppeteer对https://www.leptitpinard.fr截图失败的问题求助

Puppeteer截图特定网站时出现"Cannot extract value when objectId is given"错误

问题详情

我使用以下Puppeteer代码进行网页截图,其他网站均能正常工作,但对https://www.leptitpinard.fr执行时抛出错误:

const puppeteer = require('puppeteer');
async function run() {
try {
const browser = await puppeteer.launch({ args: ['--no-sandbox'], headless: 'new' });
const page = await browser.newPage();

    await page.goto('https://www.leptitpinard.fr', { waitUntil: 'networkidle0' });
    await page.screenshot({path: 'screenshot.png'});
    await browser.close();
} catch (error) {
    console.error('Error during capture:', error);
}
}
run();

错误输出:

root@vps-0134553348d1:/var/www/vhosts/xxxxx.fr/httpdocs/api# node test1.js
/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/util/assert.js:28
throw new Error(message);
^

Error: Cannot extract value when objectId is given
at assert (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/util/assert.js:28:15)
at valueFromRemoteObject (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/util.js:239:28)
at createClientError (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/util.js:122:16)
at CDPPage._CDPPage_handleException (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:894:94)
at /var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:186:100
at /var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:248
at Array.map ()
at Object.emit (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:232)
at CDPSessionImpl.emit (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js:87:22)
at CDPSessionImpl._onMessage (/var/www/vhosts/xxxxx.fr/httpdocs/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js:441:18)

解决方案

这个错误一般是目标页面抛出了包含复杂对象的异常,Puppeteer解析该异常时失败导致的,试试下面几种方法:

  • 忽略页面级错误:在page.goto前添加监听,捕获页面错误但不处理,避免Puppeteer尝试解析异常对象

    page.on('pageerror', () => {});
    
  • 调整页面加载等待策略:networkidle0要求所有网络连接都断开,可能等待过久触发异常,换成domcontentloaded或networkidle2

    await page.goto('https://www.leptitpinard.fr', { waitUntil: 'domcontentloaded' });
    
  • 更新Puppeteer版本:旧版本可能和目标网站的JS环境不兼容,执行更新命令:

    npm update puppeteer
    
  • 模拟真实浏览器环境:添加额外启动参数,避免网站检测,同时增强兼容性

    const browser = await puppeteer.launch({ 
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"'
      ], 
      headless: 'new' 
    });
    

完整修改后的代码

const puppeteer = require('puppeteer');
async function run() {
  try {
    const browser = await puppeteer.launch({ 
      args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"'
      ], 
      headless: 'new' 
    });
    const page = await browser.newPage();

    // 忽略页面抛出的错误,避免Puppeteer解析异常失败
    page.on('pageerror', () => {});
    
    await page.goto('https://www.leptitpinard.fr', { waitUntil: 'domcontentloaded' });
    await page.screenshot({path: 'screenshot.png'});
    await browser.close();
  } catch (error) {
    console.error('Error during capture:', error);
  }
}
run();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:39:58