0

我需要从 imgur 帖子网址获取图片网址。

帖子的网址如下所示: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);
        })
    });

我对这篇文章的 xray 有想法:使用nodeJS 使 imgur 链接在 url 的末尾有 .png 或 .jpg但它已经很旧了,所以我不确定它是否仍然有效。

有人可以告诉我另一种从 imgur 获取图像 url 的方法或如何修复我的 xray 代码吗?

感谢您的时间。

4

1 回答 1

1

你可以使用 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 })
    })
});
于 2021-09-20T20:08:35.257 回答