#javascript #google-chrome #puppeteer
#javascript #google-chrome #puppeteer
Вопрос:
Я делаю небольшой скрипт, и я хочу, чтобы он получал src из первого изображения в Google фото, я перепробовал так много вещей, но мне не удалось получить src и сохранить его в переменной. Пока это скрипт, я буду очень благодарен, если вы мне поможете.
const puppeteer = require('puppeteer');
let imgSrc
(async () => {
const browser = await puppeteer.launch({
headless: false,
});
const page = await browser.newPage();
await page.setViewport({
width:1920,
height:1080,
isMobile: false
})
await page.goto('https://www.google.com/imghp');
await page.waitForXPath('/html/body/div[2]/div[2]/div[2]/form/div[2]/div[1]/div[1]/div/div[2]/input')
await page.click('#sbtc > div > div.a4bIc > input')
await page.type('#sbtc > div > div.a4bIc > input', 'Tiras Glucomet Freestyle Optimun 50 unidades y 100 unidades')
await page.click('#sbtc > button > div > span > svg')
await page.waitForXPath('/html/body/div[2]/c-wiz/div[3]/div[1]/div/div/div/div/div[1]/div[1]/div[1]/a[1]/div[1]/img')
await page.click('#islrg > div.islrc > div:nth-child(1) > a.wXeWr.islib.nfEiy.mM5pbd > div.bRMDJf.islir > img')
await page.waitForXPath('/html/body/div[2]/c-wiz/div[3]/div[2]/div[3]/div/div/div[3]/div[2]/c-wiz/div[1]/div[1]/div/div[2]/a/img')
const data = await page.evaluate(() => {
let src = document.querySelector('#Sva75c > div > div > div.pxAole > div.tvh9oe.BIB1wf > c-wiz > div.OUZ5W > div.zjoqD > div > div.v4dQwb > a > img').getAttribute('src')
imgSrc = src
})
console.log(imgSrc)
})();
Ответ №1:
Код в аргументе функции page.evaluate()
выполняется в контексте браузера, поэтому он не имеет доступа к переменным контекста puppeteer, включая imgSrc
. Вам нужно перенести данные, а затем присвоить их переменной:
imgSrc = await page.evaluate(() => {
let src = document.querySelector('#Sva75c > div > div > div.pxAole > div.tvh9oe.BIB1wf > c-wiz > div.OUZ5W > div.zjoqD > div > div.v4dQwb > a > img').getAttribute('src')
return src;
})
console.log(imgSrc)