javascript - JS Puppeteer 等待页面加载完成
问题描述
在看到这个使用 puppeteer 的 youtube 视频后,我受到启发,开始尝试使用它。但我似乎错误地选择了一个网站作为入门项目。
const puppeteer = require('puppeteer')
;(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('http://www.produktresume.dk/AppBuilder/search?page=0')
page.once('load', () => {
const drugs = page
.evaluate(() =>
[...document.querySelectorAll('div.entity-link')].map(item => item)
)
.catch(err => console.log(err))
console.log(drugs[0])
})
await browser.close()
})()
我用谷歌搜索并忘记了我尝试过的不同的东西..
我对我的问题的看法是我没有在正确的时间调用评估 - 当页面加载时。
解决方案
绝对不需要使用page.on('load')
来查找页面是否加载。
您可以使用,
waitUntil
.goto
随叫随到的选项。waitForSelector
特定选择器的功能。
用法,
await page.goto('http://www.produktresume.dk/AppBuilder/search?page=0', {waitUntil: 'networkidle0'});
await page.waitForSelector("#wrapper"); // Found on the page source code, wait for this to appear
// the rest is just as usual
const drugs = await page
.evaluate(() =>
[...document.querySelectorAll('div.entity-link')].map(item => item)
)
.catch(err => console.log(err))
console.log(drugs[0])
确保await
用于.evaluate
通话。
推荐阅读
- python - 如何在轴(Altair)上进行清晰的日期显示?
- c - 在随机填充的数组中找到一组最常见的数字
- spring - Spring + Hibernate - 启用二级缓存
- leaflet - 为什么我的传单地图在浏览器中新打开时显示在左上角但在最小化或/和最大化它显示的窗口之后
- java - 如何计算 OOP 中的平均值?
- scatter-plot - 如何在R中的条形图上绘制两个变量之间的最佳分隔线
- swift - 到达 UITableView 的末尾时加载更多
- java - DisplayMetrics widthPixels 返回 0 android java
- regex - 用于查找包含超过 3 个“a”字符的单词的正则表达式
- android - 如何在 Draw 上的两点之间绘制“圆线”并使其可缩放和可滚动?