首页 > 解决方案 > 学习 Javascript(木偶师)

问题描述

我试图学习在网络上做一些请求,使用 javascript 使用 puppeteer。

所以我终于从一个随机的网站上得到了一些 div 之后的标签 a 的值。

但我不知道如何将此代码放在“for”中以获取 10 个值(10 个连续标签)。

这就是我获得价值的方式(它的工作):

const resultado0 = await page.evaluate(() => {
        return document.querySelectorAll('.ui.divided.list > a')[0].textContent;
      });
      console.log(`O valor é ${resultado0}`);

我如何尝试使用 for(不工作“ReferenceError:我未定义”):

for (var i = 0; i < 9; i++) {
    const resultado = await page.evaluate(() => {
      return document.querySelectorAll('.ui.divided.list > a')[i].textContent;
    });
    console.log(`O valor é ${resultado}`);
  }

所以我不想重复相同的代码并输入([1],[2],[3],...),我该怎么做?

谢谢

编辑:忘记告诉我不能用 querySelectorAll 打印结果,它的返回未定义。前任:

const resultado = await page.evaluate(() => {
      return document.querySelectorAll('.ui.divided.list > a').textContent;
    });
    console.log(`O valor é ${resultado[0]}`);

标签: javascriptpuppeteer

解决方案


您需要 page.evaluate(不同的上下文)内循环,即便如此,您会更容易通过Array::map

const resultado0 = await page.evaluate(() => {
  // Get the elements as a DOM node list
  const elements = document.querySelectorAll(".ui.divided.list > a");
  // Convert to an array we can map over, then map over to get the text content.
  return Array.from(elements).map((el) => el.textContent);
});
console.log(`O valor é ${resultado0}`);

推荐阅读