wri*_*per 2 javascript node.js async-await puppeteer
我想用 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();
})();
| 归档时间: | 
 | 
| 查看次数: | 6998 次 | 
| 最近记录: |