gpt4 book ai didi

javascript - 在 Puppeteer 中的 page.evaluate 内循环

转载 作者:行者123 更新时间:2023-11-28 03:35:40 26 4
gpt4 key购买 nike

我在 page.evaluate 方法中有一个循环。该循环迭代一个查询选择器,该选择器从页面中文本元素的多个实例捕获innerText。

我收到错误评估失败:无法读取“innerText”的属性

我尝试在 page.evaluate 之外循环,但无法从 page.evaluate 函数内访问我的迭代变量。

//这是我想要实现的目标的草稿:

    const scrapeData = [];
const data = await page.evaluate(() => {

// Iteration to capture each target text in the page
for (var i = 1; i < 9; i++) {

// Select target text
const serpDesc = document
.querySelector(
`#rso > div:nth-child(4) > div > div:nth-child(${i}) > div > div > div.s > div > span`
)
.innerText.trim();

// Build an array for the captured text
scrapeData[i] = serpDesc

return {
serpDesc
};
};
});

我的目标是将页面中的一些链接描述(纯文本)抓取到数组中。没有迭代代码,一切正常。

最佳答案

尝试:

const serpDesc = await page.evaluate(
() => [...document.querySelectorAll(`#rso > div:nth-child(4) > div > div:nth-child(${i}) > div > div > div.s > div > span`)].map(elem => elem.innerText)
);

您可能需要稍微重构一下选择器,或者将 serpDesc 函数包装在 for offorEach 循环中。

您也可以尝试类似的方法

async function elSelector(i) {
//Where i is the incremented value you pass

await page.evaluate((i) => {

let eval = $('yourSelector').toArray();
$(eval[i]).innerText
}, i)

}

for (i=0; i<9; i++) {
elSelector(i);
}

关于javascript - 在 Puppeteer 中的 page.evaluate 内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com