$$eval 返回未定义。在木偶师 js 中

$$eval is returning undefined. In pupeteer js

我目前正在尝试获取 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);

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

中注销结果

过了这个点我怎么会img.src?

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

因此,您可以这样做:

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