![](/img/trans.png)
[英]'page.evaluate()' inside a loop (in Puppeteer) returning same value
[英]Changing the value of a variable inside page.evaluate Puppeteer (Javascript)
我对此比较陌生,所以请多多包涵。 我正在尝试使用 Puppeteer 创建一个 web 刮板,我有以下代码:
var data = [];
async function scrapePage (url, data) {
const browser = await puppeteer.launch( {headless: true});
const page = await browser.newPage();
await page.goto(url);
var dataPup = await page.evaluate( (url, data) => {
data.push("example")
return {
"Data": data,
}
}, url, data);
await console.log({
"Data": dataPup,
"Data Check": data,
});
await browser.close();
return;
}
我遇到的问题是,将“数据”和“数据检查”记录到控制台时,对数据变量所做的更改不会在 dataPup 之外更改。 有没有办法在 dataPup 全局更新变量内部进行更改? 谢谢。
对于其他为此苦苦挣扎的人,我找到了一种解决方法。 如果您有大量变量,这有点草率,但它可以完成工作,所以如果有人知道更清洁的方法,请告诉我。 在将数据记录到控制台之前添加以下行会将数据保存到全局变量数据中:
data += dataPup["Data"];
之后,您只需将数据而不是 dataPup 记录到控制台。
您应该能够使用 window.data 访问它,否则它不在 scope 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.