我正在AWS Lambda上使用chromeless无头浏览器。
我正在尝试弄清楚如何对内容进行分页,但是我是Node和async / await的新手。
这是我的代码:
const Chromeless = require('chromeless').default
async function run() {
const chromeless = new Chromeless({})
var results = [];
const instance = await chromeless
.goto('https://www.privacyshield.gov/list')
for (i = 0; i < 3; i++)
{
console.log('in for');
instance
.html()
.click('a.btn-navigate:contains("Next Results")')
.wait(3000)
results.push(html)
}
await chromeless.end()
}
run().catch(console.error.bind(console))
但是我得到了错误:
TypeError: Cannot read property 'html' of undefined
这意味着没有在等待之外定义实例。我迫不及待地要在每个for循环迭代中创建单独的实例,因为我会失去在页面上的位置。
最佳答案
花了一些时间才弄清楚,但是很有趣,这也是我第一次从节点等待异步代码。
const { Chromeless } = require('chromeless')
async function run() {
const chromeless = new Chromeless()
let curpos = chromeless
chromeless.goto('https://www.privacyshield.gov/list')
.press(13)
.wait(3000);
const page1 = await curpos.html()
curpos = curpos.click('a.btn-navigate')
.wait(3000);
const page2 = await curpos.html()
curpos = curpos.click('a.btn-navigate')
.wait(3000);
const page3 = await curpos.html()
console.log(page1)
console.log("\n\n\n\n\n\n\n")
console.log(page2)
console.log("\n\n\n\n\n\n\n")
console.log(page3)
await chromeless.end()
}
run().catch(console.error.bind(console))
希望您能从那里开始。
有趣的是,我能够转换为ES5代码并对其进行调试。
希望能帮助到你。
关于javascript - 在node.js中使用chromeless分页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46126596/