使用操纵符在Google图片上获取img src

时间:2020-09-16 17:08:19

标签: javascript google-chrome puppeteer

我正在做一个小脚本,我希望它从google照片上的第一张图片中获取一个src,我已经尝试了很多事情,但是我无法获取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 个答案:

答案 0 :(得分:1)

函数参数оfpage.evaluate()中的代码在浏览器上下文中执行,因此它无法访问伪造者上下文的变量,包括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)