You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

抓取DesktopNexus图片时urls返回空数组,请求代码分析与重写

解决DesktopNexus图片抓取返回空URL数组的问题

我帮你分析下原代码失效的原因,再给你重写可运行的版本——核心问题是原代码的选择器是针对Google Images的页面结构写的,和DesktopNexus的搜索结果页面完全不匹配,所以找不到任何链接,自然返回空数组[]。

原代码的问题点

你原代码里用了$(".image a.link")来定位图片链接,但DesktopNexus的搜索结果页面里,根本没有这个类名的元素。打开目标页面检查DOM结构就能发现,每个图片项的容器是div.thumb-container,里面的图片跳转链接是a.thumb,而且这个链接是相对路径(比如/wallpaper/2467890),直接用的话是无效的,需要补全域名。

重写后的完整代码

function kitsuneimage(message) {
    // 生成1-60范围内的随机页码,原代码的60+2逻辑不合理,这里修正为常规随机页码逻辑
    const randomPage = Math.floor(Math.random() * 60) + 1;
    const options = {
        url: `https://www.desktopnexus.com/search/kitsune+girl/${randomPage}/`,
        method: "GET",
        headers: {
            "Accept": "text/html",
            // 使用更真实的Chrome浏览器UA,降低被反爬拦截的概率
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
        }
    };

    console.log(options.url);
    request(options, function(error, response, responseBody) {
        if (error) {
            console.error("请求出错:", error);
            return;
        }
        // 加载页面内容到cheerio进行解析
        const $ = cheerio.load(responseBody);
        // 定位正确的图片链接元素:每个缩略图容器内的a.thumb标签
        const links = $(".thumb-container a.thumb");
        
        // 将相对路径转换为完整URL,同时过滤掉可能的空链接
        const urls = links.map((i, el) => {
            const href = $(el).attr("href");
            return href ? `https://www.desktopnexus.com${href}` : null;
        }).get().filter(Boolean);

        console.log("抓取到的URL列表:", urls);
        if (!urls.length) {
            console.log("未抓取到任何有效图片链接");
            return;
        };
        // 发送第一个图片链接到指定频道
        message.channel.send(urls[0]);
    });
}

关键修改说明

  • 选择器替换:把$(".image a.link")改成$(".thumb-container a.thumb"),这是DesktopNexus搜索结果中图片跳转链接的正确DOM路径
  • URL补全:原代码拿到的是相对路径,通过拼接域名https://www.desktopnexus.com生成可直接访问的完整URL
  • UA优化:用更真实的Chrome浏览器User-Agent字符串,降低被网站反爬机制拦截的概率
  • 错误处理增强:增加了请求错误的日志输出,方便后续排查问题
  • 空链接过滤:避免因为页面异常导致的空URL被加入数组,提升代码健壮性

内容的提问来源于stack exchange,提问作者user13992262

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:37:30