基本原理:DedeCMS如何处理分页?
DedeCMS的分页采集功能依赖于一个核心概念:“规则循环”。

(图片来源网络,侵删)
想象一下,你要采集一个小说网站的所有章节,网站的结构是:
- 列表页:包含所有章节的链接,如
book/1.html,book/2.html,book/3.html... - 内容页:每个章节的具体内容,如
chapter/1001.html,chapter/1002.html...
DedeCMS的处理流程是这样的:
- 主规则:你首先创建一个“主规则”,这个规则指向列表页,这个规则的任务是找到所有章节链接。
- 循环设置:在“主规则”的设置中,你告诉DedeCMS这个列表页是分页的,你需要提供:
- 列表页URL的规律:
book/list_{page}.html,这里的{page}是一个占位符,DedeCMS会自动替换成页码(1, 2, 3...)。 - 循环的起始页码:通常从1开始。
- 循环的结束页码:你可以设置一个很大的数字(比如999),或者使用更智能的方式(见下文高级技巧)。
- 列表页URL的规律:
- 子规则:你创建一个“子规则”,这个规则指向内容页,这个规则的任务是解析从主规则中获取到的章节链接,并提取标题、正文、作者等信息。
- 关联:在最终的采集任务中,你将“主规则”和“子规则”关联起来,DedeCMS会先根据主规则遍历所有分页列表页,从每一页中提取出内容页的URL,然后再用子规则去抓取这些URL的内容。
简单总结:主规则负责“找路”(找到所有分页和内容链接),子规则负责“干活”(从内容页里抓取数据)。
详细操作步骤
我们以一个常见的博客文章列表为例,假设其URL结构为 https://example.com/article/list_{page}.html。

(图片来源网络,侵删)
第1步:创建“列表页规则”(主规则)
- 进入DedeCMS后台,点击 “采集” -> “增加采集”。
- 填写基本信息:
- 任务名称:给这个采集任务起个名字,如“某某博客文章采集”。
- 起始URL:填写第一页的列表页URL,
https://example.com/article/list_1.html。 - 目标网站:填写网站名称,方便管理。
- 作者:可以留空,或设置一个默认作者。
- 来源:可以留空,或设置一个默认来源。
- 时间:选择文章时间的获取方式,通常是“从内容页提取”。
- 配置列表页内容:
- 列表开始:在列表页的源码中,找到包含所有文章列表的那个
<div>或<table>的开始标签。<div class="article-list">,把这部分代码复制到“列表开始”文本框中。 - 列表结束:找到这个列表容器的结束标签,
</div>,复制到“列表结束”文本框中。
- 列表开始:在列表页的源码中,找到包含所有文章列表的那个
- 链接:
- 链接目标:选择“链接”。
- 链接区域:在刚才的“列表开始”和“列表结束”之间的代码中,找到每篇文章标题的
<a>标签。<a href="/article/123.html">文章标题</a>,把<a href="复制到“链接区域”的开始处,把">复制到“链接区域”的结束处。 - 链接替换:如果获取到的链接是相对路径(如
/article/123.html),你需要在这里补全为完整路径,在“链接替换”中填写https://example.com,这样/article/123.html就会被替换成https://example.com/article/123.html。
- 设置循环(关键步骤):
- 勾选 “启用循环”。
- 循环URL格式:这是最关键的一步!填写列表页的URL规律。
https://example.com/article/list_{page}.html。一定要用{page}作为页码的占位符。 - 起始页码:通常填写
1。 - 结束页码:先填写一个较大的数字,
20,你可以先采集几页测试,确认无误后再调大这个数字。
- 点击 “保存”,列表页规则就创建完成了。
第2步:创建“内容页规则”(子规则)
- 再次点击 “采集” -> “增加采集”。
- 填写基本信息:
- 任务名称:起个名字,如“某某博客文章内容规则”。
- 起始URL:随便填写一个你刚刚采集到的文章URL,
https://example.com/article/123.html。
- 页:
- 在文章页源码中找到标题标签,
<h1 class="title">...</h1>,把<h1 class="title">复制到“标题”的开始处,把</h1>复制到“标题”的结束处。 - 找到包含文章正文的最外层标签,
<div class="article-content">...</div>,把这部分代码复制到“内容”文本框中。 - 分页符:如果文章内容本身是分页的(下一页”按钮),你需要在这里设置,在源码中找到“下一页”的
<a>标签,把它的HTML代码复制进来,DedeCMS会自动识别并合并分页内容。(注意:这是文章内容的分页,不是列表的分页) - 发布时间:找到文章发布时间的标签,
<span class="date">2025-10-27</span>,把对应代码复制进去。 - 作者:找到作者标签。
- 来源:找到来源标签。
- 在文章页源码中找到标题标签,
- 点击 “保存”页规则也创建完成了。
第3步:创建最终的采集任务并运行
- 点击 “采集” -> “采集管理”。
- 点击 “增加新采集”。
- 选择规则:
- 在“列表规则”下拉框中,选择你刚才创建的“某某博客文章采集”(主规则)。
- 规则”下拉框中,选择你刚才创建的“某某博客文章内容规则”(子规则)。
- 选择栏目:选择你要把文章发布到哪个DedeCMS栏目下。
- 高级选项:
- 是否下载远程图片:通常勾选,可以把文章里的图片下载到你的服务器。
- 是否替换链接:根据需要选择。
- 采集间隔:建议设置一个间隔(如1-2秒),避免对目标网站造成太大压力,也防止被封IP。
- 点击 “开始采集”。
DedeCMS就会自动从第一页列表开始,抓取所有文章链接,然后逐个进入这些链接抓取内容,直到处理完你设定的“结束页码”。
高级技巧与注意事项
-
如何智能判断分页的结束页码?
- 手动设置一个很大的结束页码(如999)是最简单的方法,如果目标网站的文章总数不多,这完全可行。
- 更智能的方法(推荐):很多网站列表页的最后一页没有“下一页”按钮,或者页码按钮是灰色的,你可以在DedeCMS的“列表规则”中使用 “列表循环结束标记”。
- 在列表页源码中,找到“下一页”按钮的
<a>标签,或者最后一页页码的<span>- 把这个标签的HTML代码复制到“列表循环结束标记”里,这样,当DedeCMS采集到某一页,发现这个标记不存在时,就会自动停止循环,非常智能。
- 在列表页源码中,找到“下一页”按钮的
-
处理JavaScript渲染的页面
- 如果目标网站的文章列表是通过JavaScript动态加载的(你查看源码时看不到文章内容),DedeCMS的默认采集功能将无法抓取。
- 解决方案:你需要使用支持JavaScript渲染的采集工具,如
Pyppeteer(Python) 或Puppeteer(Node.js) 写一个自定义的采集脚本,然后将抓取到的数据通过DedeCMS的接口或数据库写入,这已经超出了DedeCMS内置采集功能的范畴。
-
遵守
robots.txt和版权- 在采集前,务必检查目标网站的
robots.txt文件(https://example.com/robots.txt),确认他们是否允许你进行采集。 - 尊重版权,不要用于商业用途或大规模抄袭,采集的最好用途是用于个人学习、研究或作为自己网站内容的补充和聚合。
- 在采集前,务必检查目标网站的
-
测试、测试、再测试
- 在设置完规则后,一定要先点击 “测试” 按钮,DedeCMS会抓取一小部分数据供你预览,你可以检查标题、内容、链接是否都抓取正确,确认无误后再进行“开始采集”。
-
性能问题
采集大量数据会消耗服务器资源,并可能导致目标网站服务器压力过大,建议在服务器负载较低的时候进行采集,并设置合理的“采集间隔”。
希望这份详细的指南能帮助你成功在DedeCMS中实现分页采集!
