получить img src в изображениях Google с помощью puppeteer

#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)