亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嵌套等待無法正常工作 Puppeteer

嵌套等待無法正常工作 Puppeteer

長風秋雁 2023-07-14 16:25:26
在此代碼中,我嘗試過濾掉 ElementHandle 數組的部分內容。我檢查它是否有效的方法是打印最終過濾數組的長度。應該是 4,而不是 30。const ar = await page.$$("li[class*=react-job-listing]");const shortArray = Array.from(ar).filter(async (el)=> {    console.log((await (await el.getProperty("innerText")).jsonValue()).includes("Easy Apply"));    return (await (await el.getProperty("innerText")).jsonValue()).includes("Easy Apply");});//console.log((await (await ar[0].getProperty("innerText")).jsonValue()).includes("Easy Apply"));console.log(shortArray.length);console.log('hello');不幸的是,這就是結果。30hellofalsefalsefalsefalsetruefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsetruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsetruefalse長度的控制臺日志出現在過濾器執行之前,而它應該是最后一件事。看來腳本并沒有等待等待。一定是由于多重嵌套的等待造成的。但我不知道如何解決它。我知道這真的很難看。但由于某些原因我現在無法使用 page.evaluate 和 DOM 函數。請暫時看一下。
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

這不是傀儡師的錯。異步函數返回 Promise,因此在Array.from(ar).filter()每個 callbak 中都返回 thruthy 值,并且不會過濾掉任何內容。使用for..of循環進行異步操作更簡單、更安全:


import puppeteer from 'puppeteer';


const browser = await puppeteer.launch();


const html = `

  <!doctype html>

  <html>

    <head><meta charset='UTF-8'><title>Test</title></head>

    <body>

      <p>foo 1</p>

      <p>foo 2</p>

      <p>bar 1</p>

      <p>bar 2</p>

    </body>

  </html>`;


try {

  const [page] = await browser.pages();


  await page.goto(`data:text/html,${html}`);


  const ar = await page.$$("p");

  const shortArray = [];

  for (const element of ar) {

    const text = await (await element.getProperty("innerText")).jsonValue();

    console.log(text, text.includes("foo"));

    if (text.includes("foo")) shortArray.push(element);

  }

  console.log(shortArray.length);

  console.log('hello');


} catch(err) { console.error(err); } finally { await browser.close(); }

foo 1 true

foo 2 true

bar 1 false

bar 2 false

2

hello


查看完整回答
反對 回復 2023-07-14
  • 1 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號