簡體   English   中英

Puppeteer - 將變量傳遞給 page.evaluate()

[英]Puppeteer - Passing a variable to page.evaluate()

我正在嘗試使用 Puppeteer 在頁面上抓取一堆表格,但表格的數量每次都不同,因此我需要將一個變量傳遞給 page.evaluate() function。

我有一個包含我需要使用的變量的數組,但可以說我想使用變量手動檢查第二個表,這就是我最初解決問題的方式:

const x = 2
let value = await page.evaluate(() =>
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText
);
console.log(value);

//Evaluation failed: ReferenceError: x is not defined

經過一些研究,據我了解,傳遞變量的正確方法是:

const x = 2;
let value = await page.evaluate((x) => { 
document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText 
}, x);
console.log(value);

//value = undefined

但是由於我沒有得到我想要的結果,所以我做錯了或沒有正確理解。 有任何想法嗎?

弄清楚了。 當然,在經過數小時的挫折后發布到 SO 5 分鍾后,但這里是:

const x = 2;
let value = await page.evaluate((x) => { 
return Promise.resolve(document.querySelector("#pageBody > div:nth-child(" + x + ") > table > tr > td").innerText) 
}, x);
console.log(value);

我只是添加這個來解決一些混亂,如果你用單行箭頭 function 你不需要返回:

const css = "#pageBody > div:nth-child(" + x + ") > table > tr > td"
let value = await page.evaluate((css) => document.querySelector(css).innerText), css);

暫無
暫無

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

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