【问题标题】:Finding image src using puppeteer使用 puppeteer 查找图像 src
【发布时间】:2021-12-14 21:14:28
【问题描述】:
我正在尝试使用 Puppeteer(class="bRMDJf islir) 获取第一个 Google 图片搜索结果的 src。
我尝试过使用父类以及图像类本身:
const imgURL = await page.$eval('img.rg_i.Q4LuWd[src]',img => img.src);
const imgURL = await page.$eval('.bRMDJf.islir img',img => img.src);
【问题讨论】:
标签:
node.js
automation
puppeteer
【解决方案1】:
您的主要问题是您的选择器错误。
const imgURL = await page.$eval('.bRMDJf.islir img', img => img.src);
应该是:
const imgURL = await page.$eval('.bRMDJf.islir > img', img => img.src);
此外,如果您想从之前选择的元素中获取图像 src,而不是从页面上下文中选择元素(使用 page.$eval),或者如果您想使用 xpath 进行选择,您可以使用取而代之的是元素上的 getProperty。
应该是这样的:
首先选择元素:
-
CSS
const element = await page.$('.bRMDJf.islir > img');
-
XPath - 选择第一个元素是 img,其属性为 src,该元素包含在属性为 class 且值为 bRMDJf islir 的任何元素中。
const element = (await page.$x('//*[@class="bRMDJf islir"]/img[@src]'))[0];
然后从元素中获取属性src的值:
const imgSrc = (await element.getProperty('src'))._remoteObject.value;