适用人群
- 想用帝国CMS做垂直内容站(如新闻、资源、行业资讯)但手动复制粘贴到手酸的新手站长
- 对正则表达式头疼、怕写采集规则的小白
- 已经装了帝国CMS但采集功能一次都没用过、看着后台发懵的运营人员
- 想批量生成SEO标准化内容、快速填充网站的创业者
本教程按步骤来,每个参数为什么这么配都讲透,你跟着点鼠标、复制粘贴就能跑通第一条采集线,别慌,帝国CMS的采集机制虽然名字唬人,但本质就是“告诉它去哪里拿数据、怎么拆开、再塞进你的数据库里”。
第一步:基础环境检查与采集开关
- 确保帝国CMS版本:至少是7.5及以上(低版本采集接口不稳定),登录后台 → 系统设置 → 系统信息,确认版本。
- 开启采集功能:系统设置 → 站点设置 → 基本设置 → 开启采集功能 → 选“是”,新手最容易忽略这一步,关了死活找不到采集按钮。
- 创建目标栏目:在“管理栏目”里新增一个栏目,行业资讯”,记下栏目ID(比如3),采集到的数据会直接进这个栏目。
第二步:添加采集节点(规则的大本营)
左侧菜单 → 数据采集 → 管理采集节点 → 增加采集节点。
- 节点名称:随便写,今日头条-科技”,最好带上来源,方便后面管理。
- 采集类型:选“普通采集”(列表+内容页),如果目标网站是瀑布流或JS加载,先劝退一步——那种得用自定义采集+正则,新手不建议碰。
- 采集字符集:这个死卡90%的人,打开目标网站右键查看源代码,找到
<meta charset="...”>,常见是utf-8或gb2312。选错会导致采集到的数据全是乱码或空白,页地址前缀**:大部分网站内容页是相对路径,比如/article/123.html,前缀填https://目标网站.com,注意结尾不要加斜杠。 - 列表页的编码范围:比如目标网站列表有10页,填
1-10,如果只想采集最新一页,填1-1,别贪心,先测一页。
第三步:配置列表页规则(找到“文章列表”)
这是规则最核心的一截,帝国CMS通过“列表页循环块”来定位每条新闻的链接。
- 列表页模板:先随便打开目标网站的一个列表页,比如
https://xxx.com/news/,复制页面源代码(Ctrl+U),贴到记事本里备用。 - 列表页规则:在采集节点编辑里找到“列表页面规则”。
- 列表开始代码:找到列表第一条新闻的HTML开始位置。
<div class="news-list">或<ul>。不要用太短的字符串,容易误伤。 - 列表结束代码:列表最后一条新闻的结束标签,
</ul>或</div>。
- 列表开始代码:找到列表第一条新闻的HTML开始位置。
- 列表项规则:在刚才那段HTML里,找到一条新闻的完整结构,
<li><a href="/news/2024/123.html" title="xxx">标题</a><span>日期</span></li>
- 链接正则:抓出
/news/2024/123.html这种动态部分,帝国CMS支持正则,也支持“匹配模式”(推荐新手用正则),填:href="([^"]+\.html)"(假设URL以.html。 - 标题正则:同样,从
title="xxx"里抓:title="([^"]+)",或者从<a>..</a>的文本里抓,具体看你的页面结构。
- 链接正则:抓出
第四步:配置内容页规则(把文章内容拆出来)
回到节点编辑 → “内容页面规则”。

帝国CMS采集规则实战,从零搭建自动化内容站,新手也能秒变老站长
这里只需要告诉帝国CMS:文章正文在哪里、标题在哪里、作者在哪里(可选)、发布时间在哪里。
页标题页源代码里的<h1 class="article-title">xxx</h1>,写正则:<h1 class="article-title">([^<]+)</h1>,注意如果标题里带双引号或特殊字符,可能需要微调,正文:找到正文容器,比如<div class="content">...</div>,写正则:<div class="content">([\s\S]*?)</div>。[\s\S]*? 表示匹配任意字符(包括换行),表示非贪婪,防止匹配到页脚。
- 发布时间:找类似
<span class="time">2024-03-15</span>,写正则:<span class="time">([^<]+)</span>,注意时间格式尽量统一,方便后续排序。
配置要点:
- 所有正则里的括号就是你要抓取的内容,帝国CMS会把括号里的部分当成字段值,里包含图片,在内容页规则下方有“图片/附件设置”,勾选“下载图片到本地”,填保存路径如
/d/file/p/,否则图片会外链,加载慢且可能失效。
第五步:测试与第一次采集
- 保存节点后,点“测试采集”,帝国CMS会弹出窗口,输入列表页的完整URL(比如
https://xxx.com/news/),点测试。 - 看测试结果是否抓出了正确数量的链接、标题是否完整,如果链接数为0,99%是列表页规则写错了,回去检查“列表开始代码”是否写对了位置。
- 链接列表出来后,点“开始采集”,选好栏目ID(前面记下的),开始跑,第一次建议只采集1~2条,别一口气全搞,万一错废了数据库。
第六步:定时任务自动化(无人值守)
左侧菜单 → 系统设置 → 计划任务 → 增加计划任务。
- 任务名称:每日自动采集”
- 任务文件:选择
/e/wcms/Scan.php(帝国CMS自带的采集脚本) - 脚本参数:填你刚才的采集节点ID,比如
nodeid=2,多个节点用逗号隔开:nodeid=2,3,5 - 时间设置:建议每天凌晨3点(服务器负载低),选“间隔执行”,比如间隔1440分钟(一天一次)。
保存后,系统会自动按计划执行采集,注意服务器要支持PHP CLI模式,否则需要配置crontab,新手图省事可以用“外部调用”方式,在宝塔面板里添加定时任务访问URL:https://你的域名/e/admin/ecmsadmin.php?enews=DoScan&nodeid=2(需要带后台验证)。
常见踩坑提醒(血泪史)
- 采集不到内容页:测试时列表页能抓到链接,但点采集后内容为空,检查内容页规则里的“内容正文”正则,看看目标网站正文是否被动态加载(比如用了Ajax),如果是,放弃吧,换目标,或正文带HTML乱码**:可能是字符集选错了,比如目标网站是
gbk你选了utf-8,重新检查meta标签,或在采集节点里勾选“自动转码”。 - 图片下载失败:服务器没有写入权限,检查
/d/file/p/目录是否为777权限;或者图片链接是防盗链的,需要添加Referer或UserAgent,方法:在系统设置 → 采集设置里,把“采集时模拟浏览器”打勾。 - 采集重复内容:帝国CMS默认按标题去重,但如果标题相似度不高会漏,建议在“管理采集节点” → 高级设置里,勾选“内容摘要去重”并设置相似度阈值(比如80%),设置“最大采集条数”为每天固定数量,防止无限叠加。
- 定时任务不运行:很多新手发现自己服务器是Windows,计划任务写错了,检查一下PHP是否有exec函数权限,或者直接用手动点击采集按钮,每天自己跑一次也是办法(直到弄明白crontab)。
- 正则写错导致页面报错:采集测试时如果弹出“数据库错误”,别慌,回到节点编辑,把规则中的
([\s\S]*?)换成试试,后者不跨行,或者用帝国CMS自带的“采集测试工具”一条条调试。
发表评论