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()