由于 DEDE 本身没有内置批量导出单页的功能,我们需要通过一些变通的方法来实现,我将为您提供几种从易到难、从官方到非官方的解决方案,并重点介绍最推荐的 Python 脚本方案。

(图片来源网络,侵删)
后台手动复制粘贴(最简单,但不推荐)
这是最直接但效率最低的方法。
- 登录 DEDE 后台。
- 进入【核心】 -> 【单页文档管理】。
- 找到你需要的单页,点击“编辑”。
- 在编辑页面,复制标题、内容等信息。
- 粘贴到本地的文本文件(如 Word、TXT)中。
- 重复以上步骤,直到所有单页都处理完毕。
优点:
- 无需任何技术,人人都会。
- 安全,不涉及网站服务器。
缺点:
- 效率极低,如果单页数量多(比如几十个),会非常耗时。
- 容易出错,格式可能会丢失。
利用 DEDE 数据库备份(最可靠,适合技术用户)
这是最根本、最可靠的备份方法,因为单页内容是存储在数据库中的,你可以直接备份数据库,然后从中提取你需要的表和字段。

(图片来源网络,侵删)
核心步骤:
-
定位数据表: DEDE 的单页内容主要存储在
#@__arctype和#@__archives这两个表中。#@__arctype:存储栏目信息,单页文档在这里被标记为ispart=1或ishidden=1,你可以在这里找到所有单页的标题、ID、类型等信息。#@__archives:存储具体的文档内容,每个单页都有一个对应的记录,里面包含了title)、body(正文)等字段。
-
导出数据:
-
方法A:通过 phpMyAdmin
(图片来源网络,侵删)- 登录你的网站数据库管理工具(通常是 phpMyAdmin)。
- 选择你的 DEDE 数据库。
- 点击
#@__archives表,选择“导出”,在“导出”选项中,选择“自定义” -> “SQL”。 - 在“输出”部分,勾选“将 SQL 查询输出到文件”,并选择“CSV for MS Excel”格式,点击“执行”。
- 对
#@__arctype表重复以上操作。 - 你会得到两个
.sql或.csv文件,里面包含了所有单页的数据。
-
方法B:通过 DEDE 后台
- 进入【系统】 -> 【数据库备份/还原】。
- 点击“开始备份”,选择“数据表”,勾选
dede_arctype和dede_archives。 - 执行备份,DEDE 会生成一个
.sql的备份文件。 - 下载这个
.sql文件,你可以用文本编辑器打开,里面包含了创建表和插入数据的完整 SQL 语句。
-
-
提取和整理: 用 Excel 或数据库工具打开导出的文件,通过
id字段将arctype和archives表关联起来,就能得到完整的单页信息(标题+内容)。
优点:
- 最完整、最可靠,是真正的数据备份。
- 可以一次性导出所有内容,效率高。
缺点:
- 需要具备一定的数据库操作知识。
- 导出的不是现成的“模板”文件,而是数据,需要后续整理。
使用 Python 脚本自动下载(最灵活,强烈推荐)
这是最适合您“下载器”需求的方案,通过编写一个简单的 Python 脚本,可以模拟浏览器登录,然后爬取所有单页内容并保存为独立的 HTML 文件。
准备工作:
- 安装 Python 环境。
- 安装必要的库:
requests(用于发送HTTP请求) 和BeautifulSoup4(用于解析HTML)。pip install requests beautifulsoup4
Python 脚本示例:
import requests
from bs4 import BeautifulSoup
import os
import re
import getpass
# --- 配置信息 ---
# 请修改以下信息
LOGIN_URL = 'http://你的网站域名/dede/login.php' # DEDE后台登录地址
MANAGE_URL = 'http://你的网站域名/dede/templist.php?nid=1' # 单页文档管理页面地址
SAVE_DIR = 'dede_single_pages' # 在脚本运行目录下创建的文件夹名
# 获取用户输入
username = input('请输入DEDE后台用户名: ')
password = getpass.getpass('请输入DEDE后台密码 (输入时不会显示): ')
# 创建保存文件夹
if not os.path.exists(SAVE_DIR):
os.makedirs(SAVE_DIR)
# 1. 模拟登录
session = requests.Session()
# 获取登录页面的表单数据,如验证码(如果有的话)
login_page = session.get(LOGIN_URL)
soup_login = BeautifulSoup(login_page.text, 'html.parser')
# 如果有验证码,需要处理,这里假设没有验证码,简化处理。
# dsql = soup_login.find('input', {'name': 'dsql'})['value'] # 示例:获取隐藏字段
login_data = {
'userid': username,
'pwd': password,
'dopost': 'login',
# 'gotopage': MANAGE_URL,
# 'vdcode': '', # 如果有验证码,需要填写
# 'safe': '1',
# 'dsql': dsql # 如果有隐藏字段,需要填写
}
print('正在尝试登录...')
login_response = session.post(LOGIN_URL, data=login_data)
# 检查登录是否成功
if "登录失败" in login_response.text or "login.php" in login_response.url:
print("登录失败!请检查用户名、密码或网络。")
exit()
else:
print("登录成功!")
# 2. 获取单页列表页内容
print(f"正在获取单页列表: {MANAGE_URL}")
list_page_response = session.get(MANAGE_URL)
list_page_response.encoding = 'utf-8' # 确保编码正确
soup_list = BeautifulSoup(list_page_response.text, 'html.parser')
# 3. 解析列表页,找到所有单页的编辑链接
# DEDE后台列表页的编辑链接通常在 <a> 标签的 href 属性中,且包含 'edit' 和 'aid='
edit_links = soup_list.find_all('a', href=re.compile(r'edit\.php\?aid=\d+'))
print(f"找到 {len(edit_links)} 个单页,开始下载...")
# 4. 循环访问每个单页的编辑页面,并提取内容
for i, link in enumerate(edit_links):
edit_url = "http://你的网站域名/dede/" + link['href']
print(f"正在下载第 {i+1}/{len(edit_links)} 个: {link.text.strip()}")
edit_page_response = session.get(edit_url)
edit_page_response.encoding = 'utf-8'
soup_edit = BeautifulSoup(edit_page_response.text, 'html.parser')
# 提取标题input = soup_edit.find('input', {'name': 'title'})= title_input['value'] if title_input else "无标题"
# 提取内容 (内容通常在名为 'body' 的 textarea 或富文本编辑器中)
# 这里以旧版的 FCKEditor 为例,新版可能叫 'body' 或 'mytextarea'
body_textarea = soup_edit.find('textarea', {'name': 'body'})
body = body_textarea.text.strip() if body_textarea else "无内容"
# 保存为 HTML 文件
# 为了让内容看起来像模板,我们给内容加上基本的 HTML 结构
html_content = f"""
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{title}</title>
</head>
<body>
{body}
</body>
</html>
"""
# 清理文件名,移除非法字符
safe_filename = re.sub(r'[\\/*?:"<>|]', "", title)
filepath = os.path.join(SAVE_DIR, f"{safe_filename}.html")
with open(filepath, 'w', encoding='utf-8') as f:
f.write(html_content)
print("\n所有单页下载完成!文件保存在:", os.path.abspath(SAVE_DIR))
如何使用此脚本:
- 将上面的代码保存为一个文件,
dede_downloader.py。 - 修改脚本开头的配置信息:
LOGIN_URL: 你的 DEDE 后台登录页面地址。MANAGE_URL: 你的单页文档管理页面地址(通常在 ->单页文档管理)。SAVE_DIR: 你希望保存下载文件的文件夹名。
- 在终端或命令行中运行脚本:
python dede_downloader.py。 - 根据提示输入后台用户名和密码。
- 脚本会自动完成登录、抓取、保存的全过程。
优点:
- 自动化程度高,一键完成所有操作。
- 效率极高,几十个单页也只需几十秒。
- 结果直观,直接生成独立的 HTML 模板文件,方便后续使用。
- 灵活可定制,你可以根据需要修改脚本来提取其他信息或改变保存格式。
缺点:
- 需要一点 Python 基础知识。
- DEDE 后台有复杂的验证机制(如动态验证码、双重登录),脚本可能需要额外调整。
寻找现成的第三方工具或服务(谨慎使用)
你可以在网上搜索“dede 单页 导出工具”、“dede 内容批量导出”等关键词,可能会找到一些非官方开发的工具或服务。
使用此类工具的风险:
- 安全性未知:工具可能包含恶意代码,会窃取你的网站后台密码或服务器信息。
- 兼容性问题:工具可能只适用于特定版本的 DEDE,在你的网站上可能无法使用或导致错误。
- 后门风险:工具可能被作者留有后门,可以随时控制你的网站。
建议:除非你对该工具有非常深入的了解和信任,否则不推荐使用此类工具,方案三(Python脚本)是可控且安全的最佳选择。
总结与推荐
| 方案 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| 手动复制粘贴 | 简单、无需技术 | 效率极低、易出错 | ⭐ (仅适用于1-2个单页) |
| 数据库备份 | 最可靠、最完整 | 需要数据库知识,非直接模板文件 | ⭐⭐⭐⭐ (适合技术用户和数据备份) |
| Python 脚本 | 自动化、高效、灵活、结果直观 | 需要一点 Python 基础 | ⭐⭐⭐⭐⭐ (强烈推荐,最符合“下载器”需求) |
| 第三方工具 | 可能简单易用 | 安全风险高、兼容性差 | ⭐ (不推荐,风险自负) |
最终建议: 对于您的需求,方案三(Python 脚本)是最佳选择,它完美地实现了“自动化下载”的功能,并且是可控和安全的,如果您对编程不熟悉,这也是一个学习如何自动化处理网络任务的绝佳机会。
