织梦定时采集任务宝塔设置
织梦CMS(DedeCMS)的采集功能可以自动抓取目标站点内容,但默认需要人工点击执行。借助宝塔面板的“计划任务”结合织梦采集接口,可以实现全自动的定时采集,本文给出完整的可落地配置方案。
一、为什么要在宝塔里做定时采集
织梦自带的“采集”入口在后台 后台 - 采集 - 采集节点管理,必须登录后手动触发。很多站长希望实现“每小时自动抓一次最新内容”,常见做法有两种:
- 浏览器插件或第三方软件定时点击,稳定性差、依赖本机开机;
- 服务器端用计划任务调用织梦采集接口,稳定、无需客户端。
宝塔面板自带可视化计划任务,支持按分钟/小时/天执行 Shell 脚本或访问 URL,是织梦服务器端定时采集的最佳载体。
二、前置条件检查
1. 确认采集节点已配置
进入 后台 - 采集 - 采集节点管理,确保至少有一个节点测试通过并能正常抓取到数据,记录该节点的 ID(鼠标移到节点名称上能看到 nodeid)。
2. 确认 PHP 版本与命令行路径
宝塔 软件商店 - PHP 中查看当前站点使用的 PHP 版本,例如 7.4。对应 CLI 路径一般是 /www/server/php/74/bin/php。可在宝塔“终端”执行 which php 或直接 ls 该目录确认。
3. 确认织梦目录权限
整站目录属主应为 www,权限 755,文件 644。可在宝塔“文件”中右键设置,或在终端执行:
chown -R www:www /www/wwwroot/yourdomain.com
chmod -R 755 /www/wwwroot/yourdomain.com
三、宝塔计划任务配置步骤
方案 A:用 wget 访问采集接口(最简单)
织梦提供了不需要登录的采集触发接口,URL 形如:
http://www.yourdomain.com/plus/spider.php?nodeid=1&upto=1
在宝塔 计划任务 - 添加任务:
- 任务类型:访问 URL
- 任务名称:织梦采集节点1
- 执行周期:每 N 小时(建议 2~6 小时,避免被目标站封)
- URL 地址:上面的接口地址
spider.php 没有防刷验证,建议在 URL 上加一个自定义密钥参数并在文件里校验,防止被他人恶意触发导致服务器负载飙升。方案 B:用 PHP CLI 执行采集脚本(更可控)
编写一个采集触发脚本 collect_cron.php 放在站点根目录,内容简化如下:
<?php
define('DEDEADMIN', dirname(__FILE__).'/dede');
require_once(dirname(__FILE__).'/include/common.inc.php');
require_once(DEDEINC.'/dedecollection.class.php');
$nodeid=isset($argv[1]) ? intval($argv[1]) : 1;
$lc=new DedeCollection();
$lc->LoadFromDB($nodeid);
$lc->AutoSource(false, $lastnid);
echo "node {$nodeid} done\n";
在宝塔计划任务里:
- 任务类型:Shell 脚本
- 执行周期:每 3 小时
- 脚本内容:
/www/server/php/74/bin/php /www/wwwroot/yourdomain.com/collect_cron.php 1
四、常见报错与排查
1. 执行后没采集到内容
先在终端手动跑一次脚本看输出。如果提示 require_once failed,多为路径不对,需用绝对路径。如果提示目标站 403,多半是被对方 User-Agent 拦截,可在采集节点“高级设置”里改 UA。
2. 采集到了但没自动生成 HTML
采集只是入库 dede_archives,生成静态页需要再触发 makehtml_archives.php。可在宝塔计划任务里追加一条 Shell:
/www/server/php/74/bin/php /www/wwwroot/yourdomain.com/dede/makehtml_archives.php 0 0 0
3. 服务器 CPU 飙高
采集和生成都很吃 CPU,建议把执行周期设到凌晨低峰,并避免多个节点同时跑。宝塔“监控”里能看到任务执行耗时,据此调整。
五、注意事项
- 采集前确认目标站是否允许被抓取,避免版权与法律风险;
- 采集频率不要过高,同一目标站每天 1~3 次为宜;
- 宝塔计划任务日志在
/var/spool/cron/或面板“日志”里,建议定期查看; - 采集后记得执行一次全站生成和百度推送,提升收录效率。
把上述配置跑通后,织梦站点就能在无人值守的情况下持续补充新内容。建议先用一个低频周期观察一周,根据采集成功率与服务器负载再逐步收敛执行间隔,最终形成稳定的自动化内容更新闭环。