船说 CMS 采集章节不全如何解决

chinaz
chinaz 初级会员超兽战士
发布于 2026-10-08 04:42 ·1 浏览 ·0 回复

学完这篇,你能按步骤排查并修复船说CMS采集小说时章节数量不全的问题,让整本小说完整入库。

第一步:核对目录分页,确保抓到全部章节链接

这一步要做的是检查采集规则有没有处理小说目录的分页,做完后目录页所有章节链接都能被采集器发现。进入船说CMS后台(以 v2.3.1 为例),左侧菜单点“采集” -> “规则管理”,找到你正在用的规则,点右侧“编辑”。在规则编辑页上方标签里点“章节列表设置”。看“列表页 URL”是否包含分页变量。如果目标站目录是 https://www.example.com/novel/123_2.html,就把规则里的 URL 改成 https://www.example.com/novel/123_[page].html,并在“分页范围”里填起始页 1、结束页 0(0 表示自动识别到最后一页)。点“保存规则”。

注意:如果目标站目录页用的是 ?page=2,变量要改成 [page] 对应查询参数,不要直接照抄示例。

第二步:开启章节内容分页合并,避免只采到第一页

这一步要配置单章内容多页时的自动合并,做完后一章里的“下一页”内容会拼接到同一章节里。仍在规则编辑页,点“章节内容设置”标签。找到“内容分页”区域,勾选“启用内容分页采集”和“自动合并分页内容”。在“下一页链接正则”里填:<a[^>]+href="([^"]+)"[^>]*>下一页</a>。如果目标站用“下一章”或“下页”,把“下一页”三个字替换掉。点“保存规则”。

注意:如果下一页是 JS 动态加载的,采集器抓不到,需要先用浏览器 F12 看 XHR 请求,再把真实接口 URL 填到规则里。

第三步:调整采集任务参数,防止超时中断

这一步要改采集任务的执行参数,做完后长时间采集不会因为 PHP 超时或内存不足半路停掉。进入“采集” -> “采集任务”,新建或编辑任务。把“单次采集章节数”改成 50;“采集间隔”填 1500 毫秒;“是否断点续采”选“是”。如果服务器能改 php.ini,设置 max_execution_time = 300、memory_limit = 256M。不能改就打开网站根目录的 .htaccess,加两行:php_value max_execution_time 300、php_value memory_limit 256M。

注意:部分虚拟主机禁用了 php_value,加了会报 500 错误,这时只能把单次采集章节数降到 20。

第四步:检查过滤规则和数据库字段

这一步要排除误过滤和字段截断,做完后章节标题和正文不会被系统丢掉或截短。在规则编辑页点“内容过滤”标签,看“排除关键词”里有没有“第”“章”“目录”等常见词,有就删掉。再用 phpMyAdmin 打开船说CMS数据库,找到章节表(通常叫 cs_chapter,前缀可能不同),把 title 字段改为 varchar(255),content 字段改为 longtext。

注意:改字段前先导出备份,content 如果原来是 text,最大只存 64KB,长章节会被截断。

第五步:用日志定位具体原因,再手动补缺

这一步要查看采集日志并补采缺失章节,做完后你能知道是规则错、被屏蔽还是超时。进入“采集” -> “采集日志”,按时间倒序看。日志写“HTTP 403/503”就是被目标站封了,去规则里设置“模拟浏览器”,填 User-Agent 和 Cookie;“内容为空”就检查内容正则;“超时”就调小单次采集数。如果只缺几章,在“小说管理”里找到小说,点“编辑” -> “章节管理” -> “添加章节”,手动填标题和正文,排序号填对。

注意:手动添加后要清一次小说缓存,否则阅读页可能还是旧目录。

小结

  • 章节不全先查目录分页,[page] 变量和分页范围最关键。
  • 单章多页要开“自动合并分页内容”,JS 分页要抓 XHR。
  • 采集任务把单次章节数降到 50、间隔 1500 毫秒,避免超时。
  • 检查过滤词和数据库 content 字段,防止误删和截断。
  • 看采集日志定位 403、空内容、超时,缺章可手动补。
版权声明:本文来自 GJ站长论坛《船说 CMS 采集章节不全如何解决》
原文链接:https://www.gj0.com/thread-746.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~