船说 CMS 小说简介怎么自动抓取
学完这篇,你能让船说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>、 和「最新章节」字样。
在规则的【内容过滤】/【替换规则】里按顺序加几条:
- 替换
<[^>]+>为空(去标签) - 替换
为空格,替换&为& - 替换
最新章节.*为空(去广告尾巴) - 首尾
trim,超过 500 字就截断
注意:过滤规则是按顺序执行的,去标签必须排在实体替换之前,否则
<div>这类转义内容会漏网。
第四步:先测单条,再批量跑
先别急着跑全站。在规则编辑页点【采集测试】/【测试采集】,粘一条真实的小说详情页 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 筛选后重采或脚本补齐。
- 频率控制、编码转换、入库转义这三条不注意,迟早出问题。
原文链接:https://www.gj0.com/thread-740.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。