我正在使用一种表单来发布URL,并对其进行处理以从网站获取数据以进行剪贴。一切正常,除了图像的src返回base64图像文件而不是实际的URL。
https://www.amazon.in/Arden-Grange-Mini-Adult-Food/dp/B01EVLSZN2/
我试图通过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编码的图像中获取实际数据?
答案 0 :(得分:0)
我认为图像的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}!`))