从节点 js 中的 imgur link 获取图像 url
Get image-urls from imgur link in node js
我需要从 imgur post urls 获取图片 urls。
post 的网址如下所示:https://imgur.com/gallery/kgfDi
但图片网址如下所示:https://i.imgur.com/DWVuwMc.jpeg
我用网络抓取库 x-ray js 尝试过,但由于某种原因它不起作用。出于某种原因,我只得到一个空数组。
我的代码(我使用 Firebase Cloud Functions):
var Xray = require('x-ray');
exports.getImgurLink = functions.https.onCall(async (data, context) => {
var xray = Xray();
xray('https://imgur.com/a/1QEKZ2f', '.image-placeholder')(function (err, res) {
console.log("res: "+res);
})
});
我从这个 Post: Make imgur link have .png or .jpg in the end of the url with nodeJS 得到了 xray 的想法,但它已经很旧了,所以我不确定它是否仍然有效。
有人可以告诉我另一种从 imgur 获取图像 url 的方法或如何修复我的 xray 代码吗?
感谢您的宝贵时间。
您可以使用 puppeteer 来做到这一点。使用您的示例链接:
const puppeteer = require('puppeteer')
exports.getImgurLink = functions.https.onCall(async (data, context) => {
let url = "https://imgur.com/gallery/kgfDi"
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto(url)
const el = await page.$x('//*[@id="root"]/div/div[1]/div[1]/div[3]/div/div[1]/div[2]/div/div/div[2]/div/div/div/div/div/img')
el.forEach(async function(element){
const src = await element.getProperty('src')
const scrText = await src.jsonValue()
console.log({ scrText })
})
});
我需要从 imgur post urls 获取图片 urls。
post 的网址如下所示:https://imgur.com/gallery/kgfDi
但图片网址如下所示:https://i.imgur.com/DWVuwMc.jpeg
我用网络抓取库 x-ray js 尝试过,但由于某种原因它不起作用。出于某种原因,我只得到一个空数组。
我的代码(我使用 Firebase Cloud Functions):
var Xray = require('x-ray');
exports.getImgurLink = functions.https.onCall(async (data, context) => {
var xray = Xray();
xray('https://imgur.com/a/1QEKZ2f', '.image-placeholder')(function (err, res) {
console.log("res: "+res);
})
});
我从这个 Post: Make imgur link have .png or .jpg in the end of the url with nodeJS 得到了 xray 的想法,但它已经很旧了,所以我不确定它是否仍然有效。
有人可以告诉我另一种从 imgur 获取图像 url 的方法或如何修复我的 xray 代码吗?
感谢您的宝贵时间。
您可以使用 puppeteer 来做到这一点。使用您的示例链接:
const puppeteer = require('puppeteer')
exports.getImgurLink = functions.https.onCall(async (data, context) => {
let url = "https://imgur.com/gallery/kgfDi"
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto(url)
const el = await page.$x('//*[@id="root"]/div/div[1]/div[1]/div[3]/div/div[1]/div[2]/div/div/div[2]/div/div/div/div/div/img')
el.forEach(async function(element){
const src = await element.getProperty('src')
const scrText = await src.jsonValue()
console.log({ scrText })
})
});