正在尝试在page.eevaluate()函数-Ppuppeter中执行for循环



我目前正在使用Puppeter抓取网页。该网页特别包含nth-child的div元素,我正试图对其进行迭代。如果没有for循环,我可以成功地检索div.ticker元素的innerText,但如果我添加一个for循环来检索多个div.ticker元素的innerText,那么for循环中的代码将无法执行,而是直接跳到第11行。执行时没有出现任何错误,这让我很难找到为什么我的for循环没有执行。

let scrapeData = await page.evaluate(() => {
for (let i = 1; i < 21; i++) {
let element = document.querySelector("#optionflow > div.component-body.ps.ps--theme_default.ps--active-y > div.data-body > div:nth-child(" + i + ") > div.ticker").innerText;
console.log(element);
}
return {
element
}
});
console.log("Hello world!");
await browser.close();
return scrapeData;
}
return语句中的element没有定义。您在for循环作用域中声明element,循环结束后它将被销毁。

如果有多个元素,请使用数组和推送元素。但你真正应该做的是我们querySelectorAll没有循环。

最新更新