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

crcmnpdw  于 2023-03-01  发布在  Node.js
关注(0)|答案(1)|浏览(124)

我试着用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)

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

s4n0splo

s4n0splo1#

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

相关问题