看到这个youtube video using puppeteer之后,我受到启发去尝试一下。但是我似乎错误地选择了网站作为入门项目。
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()
})()
我在Google周围四处搜寻,并且对自己尝试过的不同方法失去了了解。
我对我的问题的看法是,在页面加载时,我没有在正确的时间调用评估。
答案 0 :(得分:2)
绝对不需要使用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
通话。