page.evaluate() - 将文档返回给 Node 时未定义

Tim*_*zik 3 javascript chromium node.js puppeteer

我尝试使用 Puppetter 获取网站文档,但不知何故 page.evaluate 无法按照我的想法工作。

  let browser = await puppeteer.launch({headless:true});
  let page = await browser.newPage();
  await page.setViewport({
    width: 1920,
    height: 1080
  })
  await page.goto('https://www.tradingview.com/chart/');

  const doc = await page.evaluate(() => {
    return document;
  });
  
  console.log(doc) 
Run Code Online (Sandbox Code Playgroud)

当我打印文档时,它打印未定义

vse*_*byt 5

不幸的是,page.evaluate()只能传输可序列化的值(大致上,JSON 可以处理的值)。由于document返回不可序列化的 DOM 元素(它包含方法和循环引用),因此将其替换为undefined. 您需要返回可序列化值(例如document.body.innerText)或使用类似page.evaluateHandle()API的值JSHandle