从节点 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 })
    })
});