船说 CMS 支持定时采集任务吗
学完这篇,你能搞清楚船说 CMS 到底能不能定时采集,并且知道怎么在宝塔面板或 Linux 计划任务里把它跑起来。
先给结论:船说 CMS 后台默认没有内置的可视化定时器(也就是不会自己到点就跑去采集),但它的采集模块可以通过外部计划任务调用采集接口,从而实现「定时采集」的效果。换句话说,功能能实现,但驱动它的活儿得交给服务器的计划任务。
下面按步骤走一遍。
第一步:确认版本和采集入口位置
这一步要拿到两个信息:你的后台版本号,以及采集菜单在哪儿。
登录后台(默认地址一般是 你的域名/admin.php),看左上角或「系统设置 → 系统信息」里的版本号,记下来。然后在左侧菜单里找采集相关入口,不同版本叫法不一样,常见的有「采集管理」「采集中心」「视频采集」,下面通常挂着「采集节点」「采集规则」「采集网址」几个子项。
注意:船说 CMS 改版比较频繁,菜单名在不同版本里会变。找不到就用浏览器 Ctrl+F 在菜单区域搜「采集」两个字,比一个个点开快。
第二步:先把采集规则建好并手动跑通
这一步的目标是:在没有定时的情况下,手动点一次采集能正常入库。定时只是「自动点按钮」,规则本身不通,定时也白搭。
进入「采集管理 → 采集节点 → 添加」,填写:名称、目标站页面编码(一般为 UTF-8 或 GBK)、列表页 URL 规则、内容页 URL 规则,以及标题、播放地址/正文内容等字段的匹配规则。保存后,回到采集规则列表,点「测试」或「采集测试」,确认能抓到数据。
第三步:找到可以定时调用的采集地址
这一步要拿到「点一次采集」对应的真实 URL。
在采集规则列表里,右键「开始采集」按钮 → 复制链接地址,或者点一次按钮然后按 F12 打开开发者工具,切到 Network(网络)面板,看第一条请求的 URL。它通常长这样:
https://你的域名/admin.php?m=collect&a=run&id=1&key=xxxxxx
把这条 URL 完整记下来,id=1 就是你要定时跑的采集规则编号。
注意:不同版本的参数名(m、a、id)可能不同,别照抄示例,一定要用你自己 F12 里抓到的那条。
第四步:用宝塔面板添加计划任务
如果你的服务器装了宝塔面板,这一步最省事。
面板左侧点「计划任务」→「添加任务」。任务类型选 访问URL,任务名称填「船说定时采集」,执行周期按需求选(比如「每30分钟」或「每1小时」),URL 粘贴第三步抓到的那条地址,保存。
如果用的是命令行,等价写法是 crontab:
*/30 * * * * curl -s "https://你的域名/admin.php?m=collect&a=run&id=1&key=xxxxxx" > /dev/null 2>&1
用 crontab -e 编辑,保存后 crontab -l 确认已写入。
第五步:解决「后台需要登录」这个坑
注意:这是 90% 的人第一次会失败的地方。直接 curl 采集地址,很可能被跳回登录页,结果是计划任务每次都执行成功、但一条数据都没采到。
两个处理办法:
一是检查你的版本是否支持「采集密钥」或「免登录采集」。如果规则里能看到 key= 这类参数,说明后台已经做了鉴权,直接用即可。
二是不支持的话,手动带上登录 Cookie。浏览器登录后台后,F12 → Application(应用)→ Cookies,复制 PHPSESSID 的值,然后这样调:
curl -s -H "Cookie: PHPSESSID=你复制的值" "https://你的域名/admin.php?m=collect&a=run&id=1"
代价是 Cookie 会随会话过期,失效后要重新复制。
第六步:验证定时任务真的在跑
跑完第一轮后,回后台看采集规则里的「采集日志」,或者直接看内容列表里新入库的条目发布时间。也可以在宝塔计划任务的「日志」里看每次执行有没有返回内容。
如果日志显示执行了但没数据,八成是第五步的登录问题;如果日志本身是空的,检查 crontab 是否保存成功、服务器的计划任务服务(crond)是否在运行。
小结
- 船说 CMS 后台没有自带定时器,定时采集需要靠宝塔计划任务或 crontab 从外部驱动。
- 关键动作是三步:建好采集规则 → 手动跑通 → 抓出采集接口 URL 交给计划任务。
- 最容易翻车的是后台登录鉴权,务必确认带上了
key参数或 Cookie,否则任务会「成功失败」。 - 采集接口参数名各版本不同,一律以自己 F12 抓到的为准,不要照抄网上示例。
- 上线前先手动测一次,再交给定时任务,能省掉大量排查时间。
原文链接:https://www.gj0.com/thread-366.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。