Web scraping 如何在img src属性中获取实际URL,而不是使用Cheerio获取Base64编码的图像?

Web scraping 如何在img src属性中获取实际URL,而不是使用Cheerio获取Base64编码的图像?,web-scraping,cheerio,request-promise,Web Scraping,Cheerio,Request Promise,我正在使用一个表单发布一个URL,并对其进行处理,以从网站获取数据,用于刮取目的。除了图像的src返回一个base64图像文件而不是实际的URL之外,其他一切都正常工作 我试图通过data old hires属性获取相同的数据,但并非所有页面都有该属性。所以我不能相信这一点 try { const html = await request.get(url) const $ = await cheerio.load(html) const imageURL = $('#

我正在使用一个表单发布一个URL,并对其进行处理,以从网站获取数据,用于刮取目的。除了图像的src返回一个base64图像文件而不是实际的URL之外,其他一切都正常工作

我试图通过data old hires属性获取相同的数据,但并非所有页面都有该属性。所以我不能相信这一点

try {
    const html = await request.get(url)
    const $ = await cheerio.load(html)

    const imageURL = $('#imgTagWrapperId').find('img').attr('src')

    res.render('results', {
        imageURL
    })
} catch (err) {
    console.log(`APP ERROR: ${err.message}`)
    res.render('index', {
        err
    })
}

那么,如何获取src属性中的实际数据而不是base64编码的图像呢?

我认为图像的URL隐藏在
data-a-dynamic-image
属性值的某个地方。因此您可以解析值,它是JSON格式的

const cheerio = require ('cheerio')
const express = require ('express')
const request = require ('request-promise')
const app = express()
const port = 3000
const url = 'https://www.amazon.in/Arden-Grange-Mini-Adult-Food/dp/B01EVLSZN2/'

app.get('/', async (req, res) => {

    try {
        const html = await request(url)
        const $ = await cheerio.load(html)

        const imageURLJSON = JSON.parse($('#imgTagWrapperId img').attr('data-a-dynamic-image'))

        res.send (imageURLJSON)
    } catch (err) {
        console.log(`APP ERROR: ${err.message}`)
        res.render('index', {
            err
        })
    }

})

app.listen(port, () => console.log(`Example app listening on port ${port}!`))

这是实际数据。稍后会使用javascript对其进行更改。你可能需要一个木偶师来做这个。仅供参考,这是刮而不是刮。报废就像垃圾一样扔掉。