Puppeteer--爬坑记录

1.运行时报错:ExperimentalWarning: The fs.promises API is experimental
解决:下载最新版本的Node~
 
2.启动后,页面崩溃
解决:
const args = [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
]
3.使用page.waitForNavigation()方法后,发现获取不到指定元素。
page.waitForNavigation({
    timeout: 30 * 1000,
    waitUntil: [
        'load',                       //等待 “load” 事件触发
        'domcontentloaded',  //等待 “domcontentloaded” 事件触发
        'networkidle0',          //在 500ms 内没有任何网络连接
        'networkidle2'           //在 500ms 内网络连接个数不超过 2 个
    ]
})
注意:如果需要等待所有异步请求执行完毕,使用以上代码没有效果?
解决:改用page.waitFor或者page.waitForSelector
 
4. 通过以下语句返回的是undefined,无法获取到elementHandle。
const span_1 = await page.$$eval('span', span_s => {
    var span = span_s.filter(span =>{
        return span.innerText.includes('定制')
    });
    console.log(span);
    return span
});
原因:回调是在浏览器环境里执行的,无法返回elementHandle类型
解决:要么在浏览器环境执行所有操作返回最终结果,要么改用page.$(), page.$$(),page.$X()再操作
 
5.TypeError: Cannot read property 'waitForSelector' of null
现象:Puppeteer不稳定??,时常会出现~,观察发现是页面元素未渲染完毕就停止渲染了,只能加入重试机制重刷页面
 
6.Page.$()和Page.$$()无法根据文本内容过滤
解决:Xpath语法会更加强大,改用page.$X()
 

原文地址:https://www.cnblogs.com/absoluteli/p/14295042.html