dede怎么采集分页

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

基本原理:DedeCMS如何处理分页?

DedeCMS的分页采集功能依赖于一个核心概念:“规则循环”

dede怎么采集分页
(图片来源网络,侵删)

想象一下,你要采集一个小说网站的所有章节,网站的结构是:

  1. 列表页:包含所有章节的链接,如 book/1.html, book/2.html, book/3.html...
  2. 内容页:每个章节的具体内容,如 chapter/1001.html, chapter/1002.html...

DedeCMS的处理流程是这样的:

  1. 主规则:你首先创建一个“主规则”,这个规则指向列表页,这个规则的任务是找到所有章节链接。
  2. 循环设置:在“主规则”的设置中,你告诉DedeCMS这个列表页是分页的,你需要提供:
    • 列表页URL的规律book/list_{page}.html,这里的 {page} 是一个占位符,DedeCMS会自动替换成页码(1, 2, 3...)。
    • 循环的起始页码:通常从1开始。
    • 循环的结束页码:你可以设置一个很大的数字(比如999),或者使用更智能的方式(见下文高级技巧)。
  3. 子规则:你创建一个“子规则”,这个规则指向内容页,这个规则的任务是解析从主规则中获取到的章节链接,并提取标题、正文、作者等信息。
  4. 关联:在最终的采集任务中,你将“主规则”和“子规则”关联起来,DedeCMS会先根据主规则遍历所有分页列表页,从每一页中提取出内容页的URL,然后再用子规则去抓取这些URL的内容。

简单总结:主规则负责“找路”(找到所有分页和内容链接),子规则负责“干活”(从内容页里抓取数据)。


详细操作步骤

我们以一个常见的博客文章列表为例,假设其URL结构为 https://example.com/article/list_{page}.html

dede怎么采集分页
(图片来源网络,侵删)

第1步:创建“列表页规则”(主规则)

  1. 进入DedeCMS后台,点击 “采集” -> “增加采集”
  2. 填写基本信息
    • 任务名称:给这个采集任务起个名字,如“某某博客文章采集”。
    • 起始URL:填写第一页的列表页URL,https://example.com/article/list_1.html
    • 目标网站:填写网站名称,方便管理。
    • 作者:可以留空,或设置一个默认作者。
    • 来源:可以留空,或设置一个默认来源。
    • 时间:选择文章时间的获取方式,通常是“从内容页提取”。
  3. 配置列表页内容
    • 列表开始:在列表页的源码中,找到包含所有文章列表的那个 <div><table> 的开始标签。<div class="article-list">,把这部分代码复制到“列表开始”文本框中。
    • 列表结束:找到这个列表容器的结束标签,</div>,复制到“列表结束”文本框中。
  4. 链接
    • 链接目标:选择“链接”。
    • 链接区域:在刚才的“列表开始”和“列表结束”之间的代码中,找到每篇文章标题的 <a> 标签。<a href="/article/123.html">文章标题</a>,把 <a href=" 复制到“链接区域”的开始处,把 "> 复制到“链接区域”的结束处。
    • 链接替换:如果获取到的链接是相对路径(如 /article/123.html),你需要在这里补全为完整路径,在“链接替换”中填写 https://example.com,这样 /article/123.html 就会被替换成 https://example.com/article/123.html
  5. 设置循环(关键步骤)
    • 勾选 “启用循环”
    • 循环URL格式:这是最关键的一步!填写列表页的URL规律。https://example.com/article/list_{page}.html一定要用 {page} 作为页码的占位符。
    • 起始页码:通常填写 1
    • 结束页码:先填写一个较大的数字,20,你可以先采集几页测试,确认无误后再调大这个数字。
  6. 点击 “保存”,列表页规则就创建完成了。

第2步:创建“内容页规则”(子规则)

  1. 再次点击 “采集” -> “增加采集”
  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. 点击 “保存”页规则也创建完成了。

第3步:创建最终的采集任务并运行

  1. 点击 “采集” -> “采集管理”
  2. 点击 “增加新采集”
  3. 选择规则
    • 在“列表规则”下拉框中,选择你刚才创建的“某某博客文章采集”(主规则)。
    • 规则”下拉框中,选择你刚才创建的“某某博客文章内容规则”(子规则)。
  4. 选择栏目:选择你要把文章发布到哪个DedeCMS栏目下。
  5. 高级选项
    • 是否下载远程图片:通常勾选,可以把文章里的图片下载到你的服务器。
    • 是否替换链接:根据需要选择。
    • 采集间隔:建议设置一个间隔(如1-2秒),避免对目标网站造成太大压力,也防止被封IP。
  6. 点击 “开始采集”

DedeCMS就会自动从第一页列表开始,抓取所有文章链接,然后逐个进入这些链接抓取内容,直到处理完你设定的“结束页码”。


高级技巧与注意事项

  1. 如何智能判断分页的结束页码?

    • 手动设置一个很大的结束页码(如999)是最简单的方法,如果目标网站的文章总数不多,这完全可行。
    • 更智能的方法(推荐):很多网站列表页的最后一页没有“下一页”按钮,或者页码按钮是灰色的,你可以在DedeCMS的“列表规则”中使用 “列表循环结束标记”
      • 在列表页源码中,找到“下一页”按钮的 <a> 标签,或者最后一页页码的 <span>
      • 把这个标签的HTML代码复制到“列表循环结束标记”里,这样,当DedeCMS采集到某一页,发现这个标记不存在时,就会自动停止循环,非常智能。
  2. 处理JavaScript渲染的页面

    • 如果目标网站的文章列表是通过JavaScript动态加载的(你查看源码时看不到文章内容),DedeCMS的默认采集功能将无法抓取。
    • 解决方案:你需要使用支持JavaScript渲染的采集工具,如 Pyppeteer (Python) 或 Puppeteer (Node.js) 写一个自定义的采集脚本,然后将抓取到的数据通过DedeCMS的接口或数据库写入,这已经超出了DedeCMS内置采集功能的范畴。
  3. 遵守robots.txt和版权

    • 在采集前,务必检查目标网站的 robots.txt 文件(https://example.com/robots.txt),确认他们是否允许你进行采集。
    • 尊重版权,不要用于商业用途或大规模抄袭,采集的最好用途是用于个人学习、研究或作为自己网站内容的补充和聚合。
  4. 测试、测试、再测试

    • 在设置完规则后,一定要先点击 “测试” 按钮,DedeCMS会抓取一小部分数据供你预览,你可以检查标题、内容、链接是否都抓取正确,确认无误后再进行“开始采集”。
  5. 性能问题

    采集大量数据会消耗服务器资源,并可能导致目标网站服务器压力过大,建议在服务器负载较低的时候进行采集,并设置合理的“采集间隔”。

希望这份详细的指南能帮助你成功在DedeCMS中实现分页采集!

-- 展开阅读全文 --
头像
dede多栏目分页如何实现?
« 上一篇 04-22
dede如何自动下载远程文件?
下一篇 » 04-22

相关文章

取消
微信二维码
支付宝二维码