簡體   English   中英

Node.js puppeteer-在循環中使用數組中的值來循環瀏覽頁面

[英]Node.js puppeteer - Use values from array in a loop to cycle through pages

我正在使用node.js和puppeteer來獲取一些數據。 ...現在我想基於數組中的不規則值訪問不同的頁面:

我的數組如下所示:

rows = [ RowDataPacket {
            id: 1,
            value: 'L3',
            name: 'Steve' },
        RowDataPacket {
            id: 2,
            value: 'GU',
            name: 'Peter' },        
        RowDataPacket {
            id: 3,
            value: 'M5',
            name: 'John' }]

因此,我要訪問的頁面是:

await page.goto('url/search?action=getname&name=L3', {waitUntil: 'load'});  
await page.goto('url/search?action=getname&name=GU', {waitUntil: 'load'});  
await page.goto('url/search?action=getname&name=M5', {waitUntil: 'load'});

數組實際上是200個值長...所以我想到做這樣的循環:

await page.goto('url', {waitUntil: 'load'});

rows = [ RowDataPacket {
            id: 1,
            value: 'L3',
            name: 'Steve' },
        RowDataPacket {
            id: 2,
            value: 'GU',
            name: 'Peter' },        
        RowDataPacket {
            id: 3,
            value: 'M5',
            name: 'John' }]

console.log(rows.length); // 3

for (let i=1; i < rows.length; i++){

    await page.goto('url/search?action=getname&name='+value, {waitUntil: 'load'});  

}

但是,如何從數組訪問值(“值”)並相應地在循環中使用它呢?

我會把browser.newPage(); 在循環內部,如下所示:

const page = []

    for (let i=1; i < rows.length; i++){

        page[i] = await browser.newPage();
        await  page[i].goto('url/search?action='+rows[i].name+'&name='+rows[i].value, {waitUntil: 'load'});

    }

然后,以相同或其他方式進行:

const newPage = await page[i].evaluate(() => {

我不確定rows數組中的內容,因為[ RowDataPacket {不是有效的JavaScript,但是假設這是實際數據的替代,並且每行都有一個value屬性,則可以使用更簡單的語法:

for (const row of rows) {
  await page.goto(`url/search?action=getname&name=${row.value}`);
}

如果您想每次創建一個新頁面,根據Emeeus的回答,可以將其包裝在try / finally

for (const row of rows) {
  const page = await browser.newPage();
  try {
    await page.goto(`url/search?action=getname&name=${row.value}`);
  } finally {
    await page.close();
  }
}

筆記:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM