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

如何修改Node.js爬虫代码获取文章标题、链接及图片?

Node.js 爬虫代码修改方案

修改要点:

  • 调整CORS中间件顺序,确保所有路由都能应用跨域规则
  • 重构抓取逻辑,同时提取文章标题、详情链接和配图地址
  • 将响应格式改为JSON,方便前端解析结构化数据
  • 移除无实际作用的/post路由
  • 统一错误返回格式,返回JSON类型的错误信息

修改后的完整代码:

const express = require("express");
const cheerio = require("cheerio");
const axios = require("axios");

const app = express();
// CORS中间件移到最前面,确保所有路由生效
app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
    res.header('Access-Control-Allow-Methods', 'GET');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

const PORT = process.env.PORT || 3002;
const website = "https://und.com";

const options = {
    headers: {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
    }
};

app.get("/", (req, res) => {
    axios(website, options)
    .then(({data}) => {
        const $ = cheerio.load(data);
        const result = $(".post") // 以文章容器为基准,确保数据对应
            .map((_, post) => {
                const $post = $(post);
                const titleEl = $post.find(".post__meta h3 a:last-child");
                return {
                    title: titleEl.text().trim(),
                    link: `${website}${titleEl.attr("href")}`, // 拼接完整链接
                    image: $post.find(".post__thumbnail img").attr("src") || "无配图"
                };
            })
            .get();
        
        // 返回JSON格式数据
        res.json(result);
    })
    .catch((error) => {
        console.log("抓取错误:", error);
        res.status(500).json({
            code: 500,
            message: "抓取数据时发生错误"
        });
    });
});

app.listen(PORT, () => {
    console.log(`服务器运行在端口: ${PORT}`);
});

说明:

  • 抓取逻辑以.post文章容器为单位,确保标题、链接、配图属于同一篇文章,避免数据错位
  • 链接通过拼接网站域名和相对路径生成完整可访问地址
  • 如果文章没有配图,会返回"无配图"作为兜底值
  • 响应统一使用JSON格式,前端可以直接解析成数组进行渲染

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:25:18