Я использую безболезненный безголовый браузер на AWS Lambda.
Я пытаюсь выяснить, как разбивать контент, но я новичок в узле и async/жду.
Это мой код:
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
что означает, что экземпляр не определен вне ожиданий. Я не жду, чтобы создавать отдельные экземпляры в каждой итерации цикла, поскольку я потерял бы свою позицию на странице.
Понадобилось некоторое время, чтобы понять это, но было интересно, это мой первый ожидающий асинхронный код от узла.
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 и отладить его.
Надеюсь, поможет.