刚刚开始使用 Puppeteer。尝试解析页面,但评估方法无法正常工作。
var Browser
var Page
var Result
puppeteer.launch()
.then(function (browser) {
console.log('Browser Created\nCreating Blank Page')
Browser = browser
return Browser.newPage()
})
.then(function (page) {
console.log('Page Created\nVisiting URL')
Page = page
return Page.goto(URL)
})
.then(function (resp) {
console.log('Website Loaded')
return Page.evaluate(function () {
// Completely Sync Stuff
console.log('Evaluating Selectors')
var myElems = document.getElementsByClassName('challenge-type light')
Result = myElems
})
})
.then(function (val) {
console.log(Result)
console.log('Done! Exiting')
Browser.close()
process.exit()
})
.catch(function (err) {
Browser.close()
console.log(err)
process.exit(1)
})
输出:
Browser Created
Creating Blank Page
Page Created
Visiting URL
Website Loaded
undefined
Done! Exiting
可能是什么错误?更喜欢没有异步/等待的解决方案。
编辑:“评估选择器”也没有记录到控制台,因此代码永远不会到达那里,这是我担心的问题。
最佳答案
我会仔细检查
document.getElementsByClassName('challenge-type light')
返回结果。
我相信您使用的是 headless 浏览器,因此有时元素可能无法按您的预期加载。
关于node.js - Page.evaluate() 不会在 Promise 链中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54029554/