在nodejs中循环异步功能

时间:2018-08-10 07:00:23

标签: node.js mongodb asynchronous web-scraping puppeteer

所以这是我的问题。在以下功能中,我想使用puppeteerjs从网站获取一些数据。该功能在网站上搜索产品,其名称来自mongodb数据库。所以这是我的问题。我想通过从mongo获得的名称数组来循环该函数。因此,如果函数一次完成,它将再次从数组中的下一个名称开始,直到数组中没有其他内容为止。

async function scrape() {
    const browser = await puppeteer.launch({
        headless: false
    });
    const page = await browser.newPage();
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36');
    await page.goto(dealer);
    await page.type('.Search-bar-text-input', arrayOfArticles[i]);
    await page.click('.Embedded-search-button')
    await page.waitFor('.BuyingOptions-total-price');

    const result = await page.evaluate(() => {
        let path = '.BuyingOptions-total-price';
        let price = document.querySelector(path).innerText;

        return price;
    });

}

所以我本来只是想这样做:

for (var i = 0, len = arrayOfArticles.length; i < len; i++){

但是从我读到的内容来看,它不适用于异步功能。我该如何为我的功能归档相同的文件?

1 个答案:

答案 0 :(得分:0)

您可以稍作修改

recordTransactions