1

所以我想去 drpciv.ro 获取一些信息。

这是代码:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.drpciv.ro/');
  await page.screenshot({path: 'example.png'});
    
  let texts = await page.evaluate(() => {

    const elements = Array.from(document.querySelectorAll('div.info-box-content'));
    return elements.map((div)=>div.innerText);
    
}); 
console.log(texts);
  await browser.close();
})();

当我输出变量 'texts' 时,控制台显示该变量为空并显示 [] 所以我假设站点加载了,因此找不到我要求的元素。我尝试制作屏幕截图以查看页面是否加载并且它是空白的。有什么帮助吗?

4

2 回答 2

0

那是因为去到 url 并不一定意味着页面已经完全加载。而是尝试将可选参数 waitUntil 添加到 goto 选项,以便应用程序仅在网络空闲指定时间后才解决此承诺。

await page.goto('https://www.drpciv.ro', {
    waitUntil: 'networkidle0' 
});

请参阅官方文档页面了解更多详细信息。

于 2020-10-06T08:13:18.227 回答
0

这发生在我身上。将 puppeteer 升级到最新版本后解决。如果你的 puppeteer 版本太旧,那么 chrome 版本就会太旧,这意味着可能不支持某些 js 方法。

于 2021-12-08T18:20:46.347 回答