船说 CMS 小说简介怎么自动抓取

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-08 04:25 ·1 浏览 ·0 回复

学完这篇,你能让船说CMS 在采集小说时把「简介」字段一起自动抓下来,不用再点进每本书手动复制粘贴。

船说CMS 是 PHP+MySQL 的小说站程序,市面上流传的版本比较多(v2、v3 以及各种二次开发版),后台菜单叫法不完全一样,所以下面每一步我都会同时说明「找什么名字的入口」和「进去改哪个字段」,你按自己后台的实际情况对号入座即可。

第一步:确认采集入口和小说表结构

这一步要搞清楚两件事:简介存在哪个字段、采集规则从哪配,后面所有改动都围绕这两处。

登录后台(一般是 /admin 或 /admin.php),左侧菜单找【采集管理】→【采集规则】。如果你的版本里写的是【小说采集】、【采集节点】或【采集任务】,点进去是同一个功能页。

同时打开 phpMyAdmin,找到船说CMS 的数据库,展开小说主表(常见表名 novel、book、article 之一,以你实际为准),确认简介字段叫什么。常见的是 intro、description、summary 里的某一个,把字段名记下来,第二步要用。

注意:很多版本的 content 是「小说正文/章节内容」而不是简介,别搞混,填错了会把正文塞进简介框。

第二步:在采集规则里做字段映射

这一步要告诉程序「网页上哪块 HTML 是简介,抓下来存进哪个字段」。

进入【采集规则】→ 选中你在用的那条规则 → 点【编辑】→ 切到【字段映射】(有的版本叫【字段设置】【内容规则】)。

找到目标字段一栏填 intro(按第一步查到的真实字段名),然后在「采集方式」里选一种:

  • XPath / CSS 选择器(推荐,稳定):小说站的简介一般在 <div class="intro">、<div id="intro"> 或 <p class="book-intro"> 里,对应写 //div[@class="intro"] 或 //div[@id="intro"]。
  • 正则:写 <div[^>]*class="intro"[^>]*>([\s\S]*?)<\/div>,括号里那一段就是要抓的内容,记得勾选「只取第一个匹配」和「去除 HTML 标签」。

第三步:加过滤规则,把脏内容清掉

这一步保证抓下来的是干净的一段话,而不是一堆 <br>、&nbsp; 和「最新章节」字样。

在规则的【内容过滤】/【替换规则】里按顺序加几条:

  1. 替换 <[^>]+> 为空(去标签)
  2. 替换 &nbsp; 为空格,替换 &amp; 为 &
  3. 替换 最新章节.* 为空(去广告尾巴)
  4. 首尾 trim,超过 500 字就截断

注意:过滤规则是按顺序执行的,去标签必须排在实体替换之前,否则 &lt;div&gt; 这类转义内容会漏网。

第四步:先测单条,再批量跑

先别急着跑全站。在规则编辑页点【采集测试】/【测试采集】,粘一条真实的小说详情页 URL,点执行,看返回结果里 intro 有没有值。

有值就回【采集任务】建任务:填列表页 URL、抓取页数、间隔设 2~5 秒,点【开始采集】。没值基本是选择器写错了——按 F12 看目标页简介那块的真实标签和 class,重新对一遍。

注意:库里已有的小说不会被自动补简介,要么在列表勾选后点【重新采集】/【更新信息】,要么走第五步。

第五步:给已有小说批量补简介

书已经在库里、只是简介为空时,采集规则帮不上忙,直接补。

方法 A:SQL 筛选后按 URL 重采

SELECT id, title, url FROM novel WHERE intro IS NULL OR intro = '';

把结果导出,用采集工具的「按 URL 列表采集」重新跑一遍。

方法 B:写个 PHP 小脚本抓

$html = file_get_contents('https://目标站/book/123.html');
preg_match('/<div[^>]*id="intro"[^>]*>([\s\S]*?)<\/div>/', $html, $m);
$intro = trim(strip_tags($m[1]));
// 再用 PDO 更新到 novel 表的 intro 字段

注意:目标页若是 GBK 编码,file_get_contents 拿到的中文会乱码,需要 mb_convert_encoding($html, 'UTF-8', 'GBK') 转一下。

注意:请求频率别太猛,同一 IP 短时间内大量抓取很容易被封;简介入库前记得再 htmlspecialchars 转义一次,防止前台 XSS。

小结

  • 简介自动抓取 = 采集规则里的字段映射 + 内容过滤,核心是把 intro 绑到页面上简介所在的 HTML 节点。
  • 动手前先在 phpMyAdmin 确认简介字段真名,别把正文当简介。
  • 选择器优先用 XPath/CSS,比正则好维护;去标签一定要排在实体替换前面。
  • 新书靠采集任务自动抓,老书靠 SQL 筛选后重采或脚本补齐。
  • 频率控制、编码转换、入库转义这三条不注意,迟早出问题。
版权声明:本文来自 GJ站长论坛《船说 CMS 小说简介怎么自动抓取》
原文链接:https://www.gj0.com/thread-740.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~