1. 项目背景与需求分析
作为技术博客作者,我经常需要整理自己在CSDN平台发布的文章列表。当需要向他人展示作品集、备份存档或迁移内容时,手动复制粘贴每篇文章标题既低效又容易出错。这个需求在以下场景中尤为突出:
- 求职时需要提供技术博客清单
- 准备个人作品集展示
- 博客内容迁移到其他平台
- 定期备份文章目录
CSDN后台虽然提供了文章管理界面,但缺乏批量导出功能。通过开发者工具分析,我们发现文章列表数据其实通过API接口返回,这为自动化获取提供了可能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术方案设计
2.1 整体实现思路
方案采用浏览器控制台脚本的方式实现,主要基于以下考虑:
- 无需额外安装软件,直接在CSDN页面运行
- 利用现有登录态,避免处理登录认证
- 实时获取最新文章数据
核心流程分为三个步骤:
- 自动翻页获取全部文章数据
- 提取文章标题和链接
- 生成Markdown格式列表
2.2 关键技术点
2.2.1 页面数据获取
通过分析CSDN个人中心网络请求,发现文章列表数据接口为:
code复制https://blog.csdn.net/community/home-api/v1/get-business-list
该接口返回JSON格式数据,包含文章标题、链接、发布时间等信息。
2.2.2 自动翻页处理
CSDN采用分页加载机制,需要模拟"加载更多"操作。通过监测发现:
- 每页返回15条数据
- 通过page参数控制分页
- 总页数可从首次返回数据中获取
2.2.3 Markdown格式生成
将获取的数据转换为标准Markdown列表格式:
markdown复制- [文章标题](文章链接)
- [另一篇文章标题](另一篇文章链接)
3. 完整实现代码
3.1 控制台脚本代码
javascript复制// ==UserScript==
// @name CSDN文章列表导出工具
// @namespace https://blog.csdn.net/
// @version 1.0
// @description 导出CSDN个人文章列表为Markdown格式
// @match https://blog.csdn.net/*
// @grant none
// ==/UserScript==
(async function() {
// 获取用户ID
const userId = window.location.pathname.split('/')[1];
if (!userId) return alert('请在个人博客主页运行此脚本');
let allArticles = [];
let page = 1;
let totalPage = 1;
// 获取文章数据函数
async function getArticles(page) {
const url = `https://blog.csdn.net/community/home-api/v1/get-business-list?page=${page}&size=15&businessType=blog&orderby=&noMore=false&username=${userId}`;
try {
const response = await fetch(url);
const data = await response.json();
return data.data;
} catch (error) {
consol
