看到这个之后我受到启发,尝试了一下它。但我似乎错误地选择了一个网站作为启动项目。
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
call.
-
waitForSelector
特定选择器的函数。
Usage,
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
call.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)