gpt4 book ai didi

javascript - 如何使用 NodeJS 在 puppeteer 中迭代异步函数

转载 作者:行者123 更新时间:2023-11-30 11:06:23 25 4
gpt4 key购买 nike

我想用 puppeteer 截屏,它适用于一个帖子。但我想让它迭代。

如果是普通函数我可以直接把函数名写在代码的最后面这样就可以迭代了。但这是异步函数,所以我不知道如何迭代它。

const puppeteer = require('puppeteer');

let postNumber = 1;
let by;

(async () => {
const browser = await puppeteer.launch({
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
userDataDir: 'C:\\Users\\{computerName}\\AppData\\Local\\Google\\Chrome\\User Data',
headless: false
}); // default is true
const page = await browser.newPage();
await page.goto(`https://band.us/band/{someNumbers}/post/${postNumber}`, {
waitUntil: 'networkidle2'
});
let element = await page.$('.boardList');
by = await page.evaluate(() => document.getElementsByClassName('text')[0].textContent);
console.log(by);

await element.screenshot({
path: `./image/${postNumber}-${by}.png`
});
console.log(`SAVED : ${postNumber}-${by}.png`)
postNumber++;
await browser.close();
})();

函数完成后,postNumber 变量应该加一。然后通过新的 URL 再次运行代码。

最佳答案

如果您想一次又一次地运行代码,可以使用普通的 for(或 while)循环。 async/await 代码可以很好地处理这些。

您可以像这样在您的案例中使用 for:

(async () => {
const browser = await puppeteer.launch(/* ... */);
const page = await browser.newPage();

for (let postNumber = 1; postNumber < 10; postNumber++) {
await page.goto(/* ... */);
let element = await page.$('.boardList');
// ...
}

await browser.close();
})();

关于javascript - 如何使用 NodeJS 在 puppeteer 中迭代异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55442565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com