第一步:检查基础设置(最常见的原因)
这是最容易出错的地方,请务必仔细核对。

(图片来源网络,侵删)
采集规则设置错误
这是最核心的部分,在“采集” -> “管理采集节点”中,编辑你的采集节点,检查以下几项:
-
目标网址列表:
- 格式是否正确? 确保网址是完整的,
http://www.example.com/list/1.html,而不是http://www.example.com/list/。 - 列表网址是否有效? 手动在浏览器中打开几个网址,确认它们能正常显示列表页内容,并且内容是你想要的。
- 列表网址是否唯一? 确保列表页之间有规律可循,并且URL是唯一的。
- 格式是否正确? 确保网址是完整的,
-
列表规则:
- 起始标记和结束标记是否准确?
- 方法一(推荐): 点击“选择范围”按钮,然后用鼠标在后台列表页面上框选出包含所有列表项的区域,这是最准确的方法。
- 如果手动填写,请务必检查标记是否包含了多余的HTML标签(
<div class="list">到</div>),或者是否漏掉了关键的标签。
- 内容链接规则:
- 链接标记是否正确? 同样,使用“选择范围”功能,精确框选出列表项中的
<a>标签,确保选中的是整个<a href="...">...</a>。 - 链接地址是否完整? 如果列表页中的链接是相对路径(如
/article/123.html),你需要在“附加网址”中补全域名,http://www.example.com,如果已经是绝对路径,则留空。
- 链接标记是否正确? 同样,使用“选择范围”功能,精确框选出列表项中的
- 起始标记和结束标记是否准确?
-
内容规则:
(图片来源网络,侵删)- 区域: 这是最最关键的一步!点击“选择范围”,然后用鼠标在浏览器中的目标文章页面上框选出包含、作者、来源、发布时间、内容的区域。
- 常见错误: 框选的范围太小(只框了正文文字)或太大(包含了页头、页脚、导航栏、广告等无关内容),范围过大或过小都会导致采集失败或内容混乱。
- 技巧: 尽量选择一个能包裹所有核心内容的父级
<div>,<div class="article-content">...</div>。
- 分页处理:
- 如果文章有分页,必须勾选“处理内容分页”。
- 起始标记和结束标记: 使用“选择范围”功能,框选出分页链接所在的区域,
<div class="page">...</div>。 - 内容页链接规则: 框选出分页链接中的
<a>标签,确保能正确识别下一页的地址。
- 去除广告/无用代码:
- 规则中,可以设置去除特定ID或Class的标签,例如去除广告
<div id="ad">...</div>,这能保持采集内容的纯净。
- 规则中,可以设置去除特定ID或Class的标签,例如去除广告
- 区域: 这是最最关键的一步!点击“选择范围”,然后用鼠标在浏览器中的目标文章页面上框选出包含、作者、来源、发布时间、内容的区域。
采集任务配置
在“采集” -> “采集管理”中,检查你的采集任务:
- 目标网站编码: 这是个致命的错误点!
- 如何检查: 在浏览器中打开目标文章页,右键选择“编码”,查看当前页面的编码是什么(通常是“UTF-8”或“GBK”)。
- 如何设置: 在DedeCMS的采集节点设置中,确保“目标网站编码”与网站的实际编码一致,如果采集的是GBK编码的网站,而你后台是UTF-8,就需要设置为
gb2312或gbk。
- 发布栏目: 确保你选择的发布栏目是存在的,并且你有发布权限。
- 作者/来源: 设置你希望自动填充的默认作者和来源。
- 是否启用: 确保采集任务的状态是“启用”。
第二步:检查DedeCMS系统环境
如果规则设置无误,那么问题可能出在系统环境上。
服务器环境
- PHP函数限制: 采集主要依赖PHP的
file_get_contents()和curl函数。- 检查方法: 在DedeCMS后台,进入“系统” -> “系统基本参数” -> “核心设置”,查看“远程文件获取方式”。
- 解决方案:
- 如果选择
curl,请确保你的PHP环境开启了curl扩展,可以通过phpinfo()函数来检查。 - 如果选择
file_get_contents,请确保allow_url_fopen选项在php.ini中是On状态。 - 如果两者都失败,可能是服务器禁用了这些函数,需要联系你的空间服务商或服务器管理员来开启。
- 如果选择
权限问题
- data目录权限: DedeCMS需要向
data目录写入缓存文件,请确保data目录及其子目录(如cache)的权限设置为755或777(777有安全风险,建议先用755,不行再试777)。 - 目标目录权限: 确保你设置的“发布栏目”对应的目录在
/uploads/或/special/下有写入权限(同样是755或777)。
模板问题
- 内容页模板: 确保你为发布栏目设置了正确的文章内容页模板(通常是
article_article.htm),如果模板不存在或有严重错误,也可能导致发布失败,看起来就像采集不到。
第三步:使用DedeCMS内置的调试工具
DedeCMS提供了一个非常强大的调试功能,能帮你快速定位问题。
- 在“采集管理”中,找到你的采集任务。
- 在任务操作栏,点击 “调试” 按钮。
- 在弹出的调试页面中:
- 测试列表规则: 输入一个列表页URL,点击“测试列表规则”,它会告诉你找到了多少条列表,并列出每条列表的标题和链接,如果这里就失败了,说明你的列表规则100%有问题。
- 规则: 从上一步测试成功的列表中,选择一条链接,点击“测试内容规则”,它会模拟抓取这篇文章,并显示它解析出的、分页等信息。
- 、内容都显示正常, 那么你的内容规则就是正确的。
- 如果显示为空或乱码, 那就是你的内容规则或网站编码设置错了。
这个调试工具是排查采集问题的利器,请务必善用它。

(图片来源网络,侵删)
第四步:其他可能的原因
- 网站反爬虫机制: 目标网站可能设置了反爬虫措施,直接拒绝来自服务器的请求。
- 解决方法: 在采集节点的高级设置中,尝试设置一个“伪造来源”(
http://www.google.com)或“伪造用户代理”(UA,Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...),这可以模拟浏览器访问,降低被屏蔽的概率。
- 解决方法: 在采集节点的高级设置中,尝试设置一个“伪造来源”(
- URL中包含特殊字符: 如果目标网址包含
&、 等特殊字符,可能会导致规则匹配失败,尝试在列表规则中使用更灵活的匹配方式。 - DedeCMS版本问题: 如果你使用的是非常古老的DedeCMS版本,可能存在已知的采集Bug,尝试升级到最新的稳定版本。
排查流程建议
遇到“DedeCMS采集不到内容”时,请按照以下顺序进行排查:
- 使用“调试”工具: 这是最快的方法,先测试列表规则,再测试内容规则,根据调试结果直接定位问题环节。
- 核对编码: 检查“目标网站编码”是否正确,这是导致乱码和采集失败的头号元凶。
- 检查规则范围: 重新用“选择范围”功能,精确框选列表区域和内容区域,确保范围恰到好处。
- 检查服务器环境: 确认PHP的
file_get_contents或curl功能是否可用。 - 检查目录权限: 确保
data和目标上传目录有写入权限。 - 考虑反爬虫: 如果以上都正常,可能是目标网站的限制,尝试伪造UA和来源。
按照这个流程,90%以上的采集问题都可以得到解决,祝您顺利!
