下面我将为你提供一份从零开始的、超详细的DedeCMS采集规则编写教程,包含核心概念、步骤、实例和常见问题。

(图片来源网络,侵删)
核心概念:理解采集的“四大件”
在开始编写规则之前,你必须先理解DedeCMS采集的四个核心部分,这就像汽车的四个轮子,缺一不可。
-
目标网址
- 是什么:你想要采集的那个网页的地址。
- 类型:
- 单页网址:只采集这一个页面,比如一篇特定的文章。
- 列表网址:包含多个文章链接的页面,这是最常用的模式,一个新闻列表页,上面有20条新闻的标题和链接。
- 作用:告诉DedeCMS去哪里抓取内容。
-
采集规则
- 是什么:定义如何从目标网页中“提取”出你想要的内容。
- 核心元素:
- :用正则表达式或XPath定位文章标题的HTML代码。
- :定位文章正文部分的HTML代码。
- 文章作者:定位作者名字的代码。
- 文章来源来源(如“新华网”)的代码。
- 发布时间:定位发布日期的代码。
- 缩略图:定位文章配图的代码。
- 分页符:如果文章有多页,需要定义如何识别下一页。
- 作用:告诉DedeCMS在目标网页的“代码汤”里,捞出哪些“肉”(内容)。
-
发布规则
(图片来源网络,侵删)- 是什么:定义采集到的内容如何存入你自己的网站数据库。
- 核心元素:
- 栏目选择:把文章存放到哪个网站栏目。
- 作者处理:如果采集不到作者,是否用固定的作者名(如“佚名”)或网站名代替。
- 来源处理:同上,可以设置固定的来源。
- 关键词处理中自动提取关键词,或者手动指定。
- 内容处理:是否要去除广告、版权信息等,或者保留原文的HTML格式。
- 是否立即审核:采集到的文章是直接发布,还是需要你手动审核。
- 作用:告诉DedeCMS把捞上来的“肉”放进哪个“盘子”(栏目),以及怎么“摆盘”(处理数据)。
-
过滤规则
- 是什么:一个高级功能,用于在采集前或采集后批量清理内容。
- 作用:自动删除文章中所有的
<script>标签(防止恶意代码)、统一替换某个词语、删除特定的HTML元素等。
编写采集规则的详细步骤(以列表页为例)
我们以采集一个新闻列表页为例,一步步编写规则。
准备工作:分析目标网站
这是最关键的一步!在DedeCMS后台操作之前,先用浏览器打开你要采集的网站列表页(http://www.example.com/news/list.html)。
- 按F12,打开浏览器的“开发者工具”。
- 切换到 “元素” (Elements) 或 “检查” (Inspect) 模式。
- 将鼠标悬停在文章标题上,右键 -> “检查” (Inspect),这时代码会高亮显示。
- 仔细观察这个标题的HTML代码,找到它的规律,它是不是被包含在
<div class="news-title">里?还是<h2>标签里?它的链接地址是什么?
第一步:创建采集节点
- 登录你的DedeCMS后台。
- 左侧菜单栏找到 “采集” -> “采集管理”。
- 点击 “增加新采集节点”。
- 填写基本信息:
- 节点名称:给这个采集任务起个名字,XX新闻网采集”。
- 起始URL:填写你刚才分析的列表页网址。
- 链接:这是列表页中指向具体文章页面的链接,你需要用开发者工具分析出这个链接的共同规律。
- 所有文章链接都是
<a href="http://www.example.com/news/123.html">。 - 它们的共同规律可能是
http://www.example.com/news/开头,.html- 在DedeCMS里,你可以用通配符 来表示不确定的部分。
- 填写为:
http://www.example.com/news/*.html
- 所有文章链接都是
- 列表间隔:采集完一个列表页后,等待几秒再采集下一个,防止对方服务器拒绝,建议设置 1-3 秒。
- 目标页编码:查看目标网页源代码,通常是
UTF-8或GB2312,必须设置正确,否则会乱码。 - 列表分页:如果列表页有“下一页”功能,可以在这里设置,实现自动翻页采集。
第二步:设置采集规则(核心)
点击上一步页面底部的 “高级选项” 或 “下一步”,进入采集规则设置界面,这里需要填写、内容、作者、时间等的提取规则。

(图片来源网络,侵删)
- 选择类型:通常选择 "使用正则表达式",因为它更灵活。
- 填写规则:回到浏览器,用开发者工具定位到文章标题的HTML代码。
- 假设代码是:
<h2><a href="http://www.example.com/news/123.html">这是一个伟大的标题</a></h2> - 你需要提取的是
这是一个伟大的标题。 - 正则表达式写法:
<h2><a [^>]*>([^<]*)</a></h2><h2><a [^>]*>:匹配<h2><a href="..."这部分,[^>]*表示匹配>之前的任意字符。([^<]*):这是关键,用括号 括起来的部分就是要提取的内容。[^<]*表示匹配<之前的任意字符,也就是标题文字。</a></h2>:匹配结尾标签。
- 假设代码是:
- 测试:在旁边的“测试”框里输入那段HTML代码,点击“测试”,如果下方能正确显示“这是一个伟大的标题”,说明规则写对了。
- 方法同上,用开发者工具定位到文章正文区域的开始和结束标签。
- 假设正文在
<div class="article-content">和</div>之间。 - 正则表达式写法:
<div class="article-content">([\s\S]*?)</div>[\s\S]*?是一个强大的正则,可以匹配包括换行符在内的所有字符。 表示非贪婪匹配,即匹配到第一个</div>就停止,避免匹配到页面其他地方的</div>。
- 假设正文在
- 分页处理:如果文章有多页,你需要在这里添加分页规则。
- 分页”部分,填写分页链接的共同规律,
http://www.example.com/news/123_*.html。 - 正则表达式里,用
{page}代替页码,<div class="article-content">([\s\S]*?)</div>,DedeCMS会自动替换{page}并抓取所有分页的内容合并。
- 分页”部分,填写分页链接的共同规律,
文章作者、来源、时间
- 方法同上,找到对应的HTML标签,用正则表达式把内容提取出来。
- 提示:很多网站会把作者、时间等信息放在
<meta>标签里,这样更容易提取。<meta name="author" content="张三">,规则可以写成<meta name="author" content="([^"]*)">。
缩略图
- 如果文章里有图片,并且你希望把它作为缩略图。
- 方法:定位到文章内容里的第一张
<img>- 正则表达式:
<img [^>]*src="([^"]*)"[^>]*>src="([^"]*)"这部分就是提取图片地址的关键。
- 正则表达式:
第三步:设置发布规则
采集规则设置完毕后,进入发布规则设置,这是决定内容最终形态的一步。
- 选择栏目:务必选择一个已存在的、支持发布文章的栏目。
- 默认作者/来源:如果采集规则没取到,就用这里设置的值。
- 内容过滤:非常重要!可以写一些正则表达式来清理内容。
- 删除所有
<script>标签:<script.*?</script> - 删除所有超链接:
<a.*?</a> - 删除特定广告DIV:
<div id="ad">.*?</div>
- 删除所有
- 处理选项:
- 内容来自外部链接:如果勾选,文章内容会保留原始链接,并自动生成摘要,不勾选则完全复制内容到你的数据库。
- 远程图片本地化:强烈建议勾选!这会自动下载文章里的图片到你的服务器,并替换为本地链接,避免图片失效和版权问题。
- 是否审核:根据你的需要选择,新站建议先审核,确认内容没问题后再批量审核发布。
第四步:保存并测试
- 填写完所有规则后,点击 “保存”。
- 回到“采集管理”页面,找到你刚刚创建的节点。
- 点击 “选择”,勾选这个节点,然后点击顶部的 “开始采集”。
- 系统会先尝试采集几篇文章进行测试,请务必仔细检查采集结果、内容、图片是否都正确抓取了。
- 如果测试没问题,就可以放心点击 “开始采集” 进行批量采集了。
常用正则表达式速查表
| 功能 | 正则表达式 | 说明 |
|---|---|---|
| 提取任意标签内的内容 | <tag[^>]*>([\s\S]*?)</tag> |
tag 是标签名,如 div, p。[\s\S]*? 匹配任意字符(包括换行)。 |
| 提取标签的某个属性 | <tag [^>]*attr="([^"]*)"[^>]*> |
attr 是属性名,如 src, href。[^"]* 匹配引号内的内容。 |
| 删除特定标签 | <script.*?</script> |
删除所有 script 标签及其内容。 |
| 删除所有超链接 | <a.*?</a> |
删除所有 <a>
|
| 删除特定 class 的 div | <div class="ad">.*?</div> |
删除 class 为 "ad" 的 div。 |
| 匹配 HTML 实体 | &[a-z]+; |
匹配如 , < 等字符实体。 |
常见问题与技巧
-
Q1: 采集后乱码怎么办?
- A: 检查“目标页编码”是否设置正确,如果还不行,可以在“过滤规则”里添加一个编码转换的规则,
euc-cn转utf-8。
- A: 检查“目标页编码”是否设置正确,如果还不行,可以在“过滤规则”里添加一个编码转换的规则,
-
Q2: 采集不到内容,或者内容为空?
- A: 90% 的情况是正则表达式写错了。
- 回到浏览器,用开发者工具再次确认目标代码。
- 在DedeCMS的“测试”框里反复测试你的正则表达式,看是否能正确匹配。
- 注意正则表达式里的空格、斜杠等符号是否与源码完全一致。
- A: 90% 的情况是正则表达式写错了。
-
Q3: 采集的内容格式很乱,有很多无关的HTML标签?
- A: 在“发布规则”的“内容过滤”里,添加更多的过滤规则来删除你不需要的标签,如广告、导航等。
-
Q4: 对方网站改版了,采集规则失效了怎么办?
- A: 这是网站的常态,你需要回到第一步,重新分析对方网站的HTML结构,然后修改你的采集规则中的正则表达式。
-
Q5: 采集很慢?
- A: “列表间隔”设置得太短,适当增加间隔时间(如3-5秒),既是礼貌,也能提高成功率,检查你的服务器网络是否通畅。
最后提醒时,请务必遵守目标网站的robots.txt协议和版权规定,仅用于个人学习或非商业用途,尊重原创,过度采集可能会对目标网站造成压力,也可能导致你的IP被封。
