javascript - $$eval 返回未定义。在 puppeteer js 中

标签 javascript node.js puppeteer

我目前正在尝试获取 html 文件的 img src,但遇到了问题。我不太确定该怎么做。让我解释一下:

我在 html 页面中有几个这样的 div:

<div class="photo-tile photo-tile-small"><img class="photo-tile-image" src="https://photos.example.com/images/randomimage.jpg"></div>

我正在尝试获取所有页面的 src。在此示例中,它将是:https://photos.example.com/images/randomimage.jpg ” 如果页面上有 10 个,我想要全部 10 个。

使用 puppeteer js 这是我尝试执行此操作的代码: (不是全部,只是相关部分):

  const getImgSrc = await page.$$eval('.photo-tile-image', img => img);
  console.log(getImgSrc);

这将返回“未定义”。我对此的理解(我确信我错了),是这里 $$.eval 正在评估这个名为“.photo-tile-image”的元素的每个实例,它将返回该元素的属性,在这种情况下它将被称为 img 从这里我希望它在 console.log(getImgSrc)

中注销结果

通过了这一点,那么我将如何获得img.src

最佳答案

您传递给 $$eval 的函数参数不是图像,而是图像数组。

因此,从那里,您可以执行以下操作:

const getImgSrc = await page.$$eval('.photo-tile-image', imgs => imgs.map(img => img.src));
console.log(getImgSrc);

关于javascript - $$eval 返回未定义。在 puppeteer js 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54698979/

相关文章:

javascript - Canvas .getContext : changing the colour of an object once an event happens

node.js - 如何处理 puppeteer 中的弹出窗口

javascript - 在Electron JS中无法使用 Remote 关闭窗口

node.js - Sequelize.define() 不是一个函数?

node.js - "const config = new Config()"未定义

node.js - Puppeteer 无法截图

javascript - 在 Puppeteer 中循环访问一组 url

JavaScript:是否可以从矩形中切出一个形状以在其中制作一个透明的孔?

php - 在删除临时 Internet 文件之前,查询 SQL 数据库的结果不会显示

javascript - web3.js 加密和解密 keystore v3 标准