下面我将从核心概念、采集流程、规则详解、实战技巧和注意事项五个方面,为你全面梳理 DedeCMS 的采集规则。

(图片来源网络,侵删)
核心概念
在开始设置规则之前,必须先理解以下几个核心概念,它们是构成采集规则的基石:
-
目标网址
- 定义:你想要采集的起始页面,这个页面通常是列表页,包含了许多文章的标题和链接。
- 示例:
https://www.example.com/news/list-1.html - 类型:
- 单页采集:只采集这一个页面的内容。
- 分页采集:采集列表页及其后续所有分页页面的内容(
list-1.html,list-2.html, ...),这是最常用的方式。
-
列表规则
- 定义:告诉 DedeCMS 如何从“目标网址”中找到并提取出每一篇文章的链接,这个规则通常是一个XPath或正则表达式,用于定位文章列表的容器。
- 示例:如果文章标题都在
<div class="news-list">下的<li>标签里,那么列表规则就是//div[@class='news-list']/li。
-
文章网址
(图片来源网络,侵删)- 定义:从“列表规则”中提取出来的每一个链接,文章网址”,DedeCMS 会依次访问这些网址,以获取文章的详细内容。
- 采集器会自动生成此项:你只需要设置好“列表规则”,程序就会自动填充“文章网址”列表。
-
内容规则
- 定义:这是采集规则中最核心、最复杂的一步,它告诉 DedeCMS 如何在每一个“文章网址”页面中,抓取你需要的具体内容(如标题、作者、来源、正文、图片等)。
- 组成部分规则由多个“采集项目”组成,每个项目对应一个字段。
- 采集项目”、“内容摘要”、“发布时间”、“正文内容”、“下载地址”等。
- 项目规则:为每个“采集项目”定义的抓取规则(同样是 XPath 或正则表达式)。
- 目标字段:将抓取到的内容保存到 DedeCMS 数据库的哪个字段,将抓取到的“标题”内容保存到
dede_archives表的title字段。
-
分页规则
- 定义:用于抓取长文章的分页内容,很多文章被分成了多页,你需要告诉 DedeCMS 如何找到下一页的链接,然后将所有页面的内容合并。
- 示例:如果下一页的链接在
<span class="next-page">标签里,那么分页规则就是//span[@class='next-page']/a/@href。
-
发布栏目
- 定义:指定采集到的文章最终要发布到网站的哪个栏目下,这个栏目必须提前在 DedeCMS 后台创建好。
-
模板
(图片来源网络,侵删)- 定义:用于定义采集到的文章在网站上最终展示的样式,你可以使用系统默认的列表和内容页模板,也可以自定义模板,来控制文章的排版、图片大小、样式等。
采集流程(后台操作步骤)
理解了核心概念后,我们来看看在 DedeCMS 后台如何一步步设置采集规则。
-
进入采集管理
- 登录 DedeCMS 后台。
- 在左侧菜单栏找到 “采集” -> “采集侠” 或 “Dede采集”(不同版本名称可能略有差异,但功能类似)。
-
新建/导入采集规则
- 点击 “新增” 或 “导入” 按钮,开始创建一个新的采集任务。
-
填写基本信息
- 任务名称:给你的采集任务起一个容易识别的名字,如“XX新闻采集”。
- 起始网址:填写你第一步中定义的“目标网址”。
- 列表分页:选择是否分页采集,并填写分页的格式(
list-{page}.html)。 - 采集网址过滤:设置一些过滤条件,避免采集到不需要的页面(如广告页、关于我们等)。
-
设置列表规则
- 选择列表范围:选择“列表范围”的匹配方式(通常默认即可)。
- 列表链接:填写 XPath 或正则表达式,用于提取文章链接。
- 测试:这是最关键的一步!点击“测试”按钮,程序会抓取起始页面,并显示它找到的所有文章链接,检查链接是否正确,如果不正确,返回修改列表规则。
-
规则
- 规则区域,你需要为每个需要抓取的字段添加一个“采集项目”。
- 添加采集项目:
- 字段名:如
title,writer,source,pubdate,body等。 - 项目名称:一个可读的名称,如“文章标题”。
- 目标字段:选择要保存到的 DedeCMS 字段。
- 项目规则:填写 XPath 或正则表达式,用于从文章页面抓取内容。
- 通常抓取
<h1>或<title>标签内的文本。 - 抓取包含文章主体的
<div>或<article>- 发布时间:抓取时间字符串,可能需要配合“时间格式”进行转换。
- 通常抓取
- 字段名:如
- 高级选项:
- 过滤标签:可以勾选要过滤掉的 HTML 标签,如
<script>,<iframe>,<style>等,避免采集到无用的代码。 - 保留 HTML:如果需要保留原文的排版(如加粗、斜体、列表),则勾选此项。
- 处理图片:这是非常重要的一项!
- 本地化:将文章中的图片下载到自己的服务器,并替换链接,这是最常用的选项。
- 水印:可以为下载的图片添加水印。
- 缩放:可以设置图片的最大宽度和高度,自动调整图片尺寸。
- 过滤标签:可以勾选要过滤掉的 HTML 标签,如
- 测试:同样,添加完每个项目后,都要用“测试”功能验证抓取结果是否正确。
-
设置分页规则
如果文章有分页,需要在这里设置“下一页”的抓取规则,并勾选“合并内容”。
-
设置发布选项
- 栏目选择:选择文章要发布的最终栏目。
- 发布选项:选择“立即发布”或“保存为草稿”。
- 作者来源:可以设置一个默认的作者和来源,或者尝试从页面抓取。
- 时间处理:可以选择“使用采集时间”或“使用发布时间”。
- 内容模板:选择用于展示文章的模板。
-
保存并执行
- 所有规则设置完毕并测试无误后,点击 “保存” 或 “开始采集”。
- DedeCMS 会开始按照你设定的规则,自动抓取内容并发布到网站上,你可以随时查看采集状态和日志。
规则详解:XPath vs. 正则表达式
在设置“列表规则”和“内容规则”时,你需要在 XPath 和正则表达式之间选择。
| 特性 | XPath | 正则表达式 |
|---|---|---|
| 用途 | 用于解析 XML 或 HTML 文档结构。 | 用于匹配 字符串 模式。 |
| 优点 | 直观,基于节点关系,即使 HTML 结构微调(如换行、空格)也可能不影响匹配。 | 灵活,强大,可以处理没有固定结构的文本。 |
| 缺点 | 对不规范的 HTML 容错性较差。 | 语法复杂,可读性差,难以处理嵌套结构。 |
| 适用场景 | 强烈推荐用于采集规则的设置,特别是抓取 <div>, <span>, <a> 等标签及其属性时。 |
当 XPath 无法解决问题时使用,例如匹配一段没有特定标签包裹的文本。 |
XPath 常用示例:
//a:获取页面所有的<a>链接。//div[@class='post-content']:获取所有class属性为post-content的<div>元素。//h1/text():获取所有<h1>标签内的文本内容。//img/@src:获取所有<img>标签的src属性值(即图片地址)。//div[@class='author']//span:获取class为author的<div>内的所有<span>元素。
实战技巧与注意事项
- 尊重版权和 robots.txt:采集前务必确认目标网站是否允许采集,并遵守其
robots.txt协议,不要过度采集,以免对源站造成压力或引发法律风险。 - 耐心测试:采集规则设置是一个“试错”的过程,不要一次性设置所有规则,先从“列表规则”开始,测试通过后再设置“内容规则”中的每一个项目。测试是你的最佳朋友。
- 处理动态网站:如果目标网站是动态加载的(通过 AJAX),DedeCMS 的默认采集可能无法抓取到内容,这种情况下,你需要手动分析网站的网络请求,找到真正的数据接口,然后用更高级的工具(如 Python + Requests/Selenium)来采集。
- 处理反爬机制:
- User-Agent:可以在采集规则的高级设置中设置自定义的 User-Agent,模拟浏览器访问。
- IP 封禁:如果采集量很大,很容易被封禁 IP,可以考虑使用代理 IP 池。
- 验证码:如果遇到验证码,DedeCMS 默认无法处理,需要人工干预或使用第三方打码服务。
- 内容去重与伪原创:
- DedeCMS 采集时可以设置是否检查文章标题是否已存在,避免重复发布。
- 为了避免搜索引擎惩罚,强烈建议对采集来的内容进行“伪原创”处理,如替换同义词、调整语序、重新分段等,DedeCMS 也集成了简单的内容替换功能。
- 定时采集:在采集任务的发布选项中,可以设置定时执行,实现自动化更新。
DedeCMS 的采集规则本质上是一个结构化的指令集,它指导程序如何从一个或多个网页中,精确地“挖取”出你想要的信息,并“搬运”到你的网站指定位置。
掌握它的关键在于:
- 理解核心概念(网址、列表、内容、分页)。
- 精通 XPath(用于定位内容)。
- 勤于测试和调试(确保每一步都正确)。
- 保持道德和法律意识(合规采集)。
希望这份详细的指南能帮助你更好地理解和使用 DedeCMS 的采集功能!
