【发布时间】:2020-01-06 00:50:03
【问题描述】:
我在 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
};
};
});
我的目标是从页面中抓取一些链接描述(纯文本)到一个数组中。没有迭代代码,一切正常。
【问题讨论】:
-
您确定 querySelector 对所有 9 个项目都有效吗?
-
结构相同,在 div:nth-child(${i}) 中有所变化。但是,使用 querySelectorAll 比按照建议的解决方案遍历每个元素要好。
标签: javascript puppeteer