☰
小说CMS自动建站系统:14种采集规则与模板配置实战
2026/10/22 8:04:30 网站建设 项目流程

简介:这是一套面向小说站长与建站爱好者的2024小说CMS自动建站系统,内置14种采集规则,可帮助用户快速搭建内容丰富的在线小说平台,适合希望低成本运营小说站、又不想深入编程的新手与有经验的站长。压缩包共16个文件,约7.78MB,以html页面模板为主,涵盖首页、分类、排行榜、搜索、小说详情与资讯等模块,另有png图标素材、js交互脚本与css样式表,构成一套可直接套用的站点骨架。系统通过多种采集策略自动抓取、整理并发布网络小说资源,减少手动录入工作量,同时在元数据、关键词与页面结构上兼顾SEO,便于提升搜索引擎收录与自然流量。资源还包含移动端模板,适配手机与平板阅读场景。目前已有579人学习下载,可借此快速理解小说站目录组织与采集规则配置思路。

1. 小说 CMS 自动建站系统:14 种采集规则到底能省多少事

如果你手头有一台闲置服务器,想搭一个能自动更新、不用天天手动复制粘贴的小说站,这套 2024 小说 CMS 自动建站系统值得先拆开看看。它的核心卖点很直接:内置 14 种采集规则,配合default_wap移动端模板、lists.html、novel.html、rank.html、search.html等一整套静态模板文件,把“内容从哪来、页面怎么出、移动端怎么适配”这三件事一次性打包好了。适合谁?适合想快速验证小说站流量模型的人、手里有老域名想做内容聚合的人,以及不想从零写爬虫和模板引擎的站长。但别急着传上去,采集规则不是插上就灵,模板标签和字段映射对不上,页面照样白屏。下面按“先看懂结构、再动手配、最后避坑”的顺序拆。

2. 拆包看结构:14 种采集规则和模板文件怎么对应

2.1 采集规则不是 14 个开关,而是 14 套字段映射

很多人第一次看到“自带 14 种采集规则”,以为是 14 个网站源,点一下就能采。实际拆开看,它更像 14 套针对不同页面结构的字段提取方案。小说站的数据结构比新闻站复杂:一本书有书名、作者、分类、状态、简介、封面,下面挂章节列表,每章又有标题、正文、发布时间。采集规则要解决的是“从目标页面的 HTML 里,把这几层数据按层级抠出来,再塞进 CMS 的数据表”。

常见做法是每条规则包含四部分:列表页 URL 模式、列表页字段提取表达式、详情页字段提取表达式、章节页字段提取表达式。14 种规则的区别通常体现在目标站点的 DOM 结构差异上,比如有的站点章节列表在<ul class="chapter-list">里,有的在<div id="list">里,正则或 CSS 选择器写法不同。你不需要 14 种全开,选跟你目标源结构最接近的那套,改几个选择器就能跑。

提示:先拿一条规则做单本测试,别一上来就开全量采集。小说站章节多,一条规则跑飞了能瞬间灌进去几万条脏数据,清理起来很麻烦。

2.2 模板文件清单与页面职责

从文件列表能看出这套系统的前端骨架是静态 HTML + JS 渲染:

文件职责关键点
index.html首页通常放推荐位、分类入口、最新更新
lists.html列表页分类/作者/状态筛选后的书籍列表
novel.html详情页书籍信息 + 章节列表
rank.html排行榜按点击/收藏/更新排序
search.html搜索页关键词查询结果
news.html/newslists.html资讯页站内公告或小说资讯
type.html分类页按题材聚合
default_wap/移动端模板手机和平板适配
css/style.css样式全站视觉
js/脚本jquery.min.js、global.js、TouchSlide.1.1.js

TouchSlide.1.1.js是移动端滑动组件,说明default_wap里首页轮播或分类切换依赖它。global.js一般封装了搜索、翻页、Ajax 请求。jquery.min.js是基础依赖,改模板前先确认版本,别混入高版本 jQuery 导致旧插件报错。

2.3 移动端default_wap的适配逻辑

default_wap不是简单把 PC 模板缩小,它通常是一套独立的 HTML 结构,配合 viewport 和触摸事件。常见做法是:PC 端用lists.html渲染列表,移动端用default_wap/lists.html,后端根据 User-Agent 或域名前缀切换模板目录。你需要在 CMS 后台的“模板设置”里把移动端模板目录指向default_wap,并确认TouchSlide.1.1.js的路径在移动端模板里引用正确。如果移动端页面能打开但轮播不动,九成是 JS 路径写错或 jQuery 加载顺序反了。

3. 配一条采集规则:从字段映射到定时任务

3.1 先手工分析目标页面结构

假设你要采一个结构典型的小说站,列表页每本书的 HTML 大致长这样:

<div class="book-item"> <a href="/book/1234/" class="book-name">示例书名</a> <span class="author">某作者</span> <span class="cat">玄幻</span> <span class="status">连载中</span> </div>

详情页章节列表:

<ul id="chapter-list"> <li><a href="/book/1234/1.html">第一章 标题</a></li> <li><a href="/book/1234/2.html">第二章 标题</a></li> </ul>

章节正文页:

<div id="content"> <p>正文段落...</p> </div>

你要在采集规则里填的就是这些选择器。常见 CMS 的采集规则配置界面会分“列表规则”和“内容规则”两块,列表规则填.book-item作为循环项,书名取a.book-name的文本,作者取.author文本,详情页 URL 取a.book-name的href。内容规则里,章节列表循环项填#chapter-list li,章节标题取a文本,章节 URL 取a的href,正文取#content的 HTML。

3.2 规则参数怎么填:以字段映射表为例

下面是一张典型的字段映射配置表,你可以照着改:

字段选择器/表达式取值方式备注
书籍列表循环.book-item循环列表页每本书的容器
书名a.book-name文本去空格
作者.author文本去空格
分类.cat文本映射到 CMS 分类 ID
状态.status文本连载/完结
详情页 URLa.book-name@href属性补全域名前缀
章节循环#chapter-list li循环详情页章节容器
章节标题a文本去空格
章节 URLa@href属性补全域名前缀
正文#contentHTML保留段落标签

参数说明:@href表示取属性值,不加@默认取文本。如果目标站用了懒加载,章节列表不在初始 HTML 里,这套基于静态 HTML 的采集规则就抓不到,需要换用带 JS 渲染的采集方式,或者找该站的移动版接口。常见做法是先关掉浏览器的 JS,看页面还能不能出章节列表,能出就说明是静态的,能采;不能出就得另想办法。

3.3 定时任务与增量更新

采集规则配好后,别手动点“开始采集”就完事。小说站的核心是持续更新,你需要配定时任务。常见做法是在 CMS 后台的“采集任务”里设置执行间隔,比如每 6 小时跑一次列表页,只采“最后更新时间为最近 24 小时”的书。增量判断通常靠书籍详情页的“最新章节”字段,或者对比章节列表里最新一章的 URL 是否已入库。

如果你用 Linux 服务器,也可以用 crontab 调 CMS 提供的采集接口:

# 每 6 小时执行一次采集任务,日志追加到 collect.log 0 */6 * * * /usr/bin/php /www/wwwroot/你的站点/cron_collect.php >> /www/wwwroot/你的站点/collect.log 2>&1

逻辑说明:0 */6 * * *表示每 6 小时的第 0 分钟执行。cron_collect.php是 CMS 常见的采集入口文件,具体文件名以你包内实际文件为准。日志重定向方便排查“为什么没采到新章节”。参数上,如果你发现采集频率太高被目标站限流,把间隔改成 12 小时,并在规则里加随机延迟。

注意:采集频率别设太激进。小说站章节页请求量大,1 分钟跑一次全量,对方服务器很容易把你 IP 封了,到时候不是规则问题,是网络层直接拒绝。

4. 模板标签与 SEO 字段:让页面能被搜到

4.1 模板里的动态标签怎么替换

这套系统的 HTML 模板不是纯静态,里面嵌了 CMS 的模板标签。常见写法是{dede:field.title/}这类风格,或者{$novel.title}这类变量风格,具体看你包内模板的实际语法。你要做的是把index.html、lists.html、novel.html里的静态示例文字,替换成对应的动态标签。比如novel.html里书名位置原本写的是“示例书名”,你要改成{$novel.name};章节列表原本是几条静态<li>,你要改成循环标签包住<li>。

如果替换后页面空白,先看 CMS 后台的“模板缓存”是否开启,清了缓存再刷新。还不行就查标签拼写,很多 CMS 对标签大小写敏感,{$novel.Name}和{$novel.name}可能一个能出一个报错。

4.2 SEO 元数据与 URL 结构

小说站的流量大头来自搜索引擎,模板里的<title>、<meta name="keywords">、<meta name="description">必须动态化。常见做法是:详情页 title 用“书名 + 作者 + 最新章节”,description 用书籍简介前 80 字,keywords 用书名 + 分类 + 作者。列表页 title 用“分类名 + 小说列表 + 网站名”。

URL 结构上,静态化对收录更友好。这套系统如果支持伪静态,建议把详情页配成/book/1234/这种形式,章节页配成/book/1234/1.html。在 CMS 的“URL 规则”里设置好重写规则,同时确认服务器(Nginx 或 Apache)的 rewrite 配置已开。Nginx 常见配置片段:

# 小说详情页伪静态 rewrite ^/book/([0-9]+)/$ /novel.php?id=$1 last; # 章节页伪静态 rewrite ^/book/([0-9]+)/([0-9]+)\.html$ /chapter.php?bookid=$1&cid=$2 last;

逻辑说明:第一条把/book/1234/映射到novel.php?id=1234,第二条把章节页映射到chapter.php。参数$1、$2是正则捕获组。改完记得nginx -t测试配置,再nginx -s reload。如果 404,先看 rewrite 规则有没有被前面的 location 拦截。

4.3 移动端与 PC 端的 SEO 关系

default_wap移动端模板如果和 PC 端内容一致,建议做响应式或至少保证移动端 URL 可被爬虫访问。常见坑是移动端模板里漏了<link rel="canonical">,导致搜索引擎把移动端页面当成重复内容。你可以在default_wap的头部加一行 canonical 指向 PC 端对应 URL,或者反过来,取决于你主推哪个版本。如果移动端流量占比高,就把 canonical 指向移动端自身,并确保移动端页面加载速度够快,TouchSlide.1.1.js和jquery.min.js该压缩就压缩。

5. 避坑与排查:采集站最容易翻车的 5 个地方

5.1 采集回来全是乱码

现象:章节正文里出现锟斤拷或问号。原因:目标站编码是 GBK,你的 CMS 数据库是 UTF-8,采集规则没做编码转换。解决:在采集规则的“内容处理”里加一步转码,常见做法是用iconv('GBK', 'UTF-8//IGNORE', $content),或者把 CMS 的采集编码参数改成跟目标站一致。如果目标站是 UTF-8 还乱码,检查数据库连接字符集是不是utf8mb4。

5.2 章节顺序错乱

现象:采回来的章节列表顺序是乱的,第一章跑到最后一章后面。原因:目标站章节列表是倒序(最新在前),而你的 CMS 默认按入库时间正序排列。解决:在采集规则里把章节循环结果反转,或者在 CMS 的章节排序设置里改成“按章节 ID 倒序”。更稳妥的做法是采集时记录目标站的章节序号,入库时按序号排序。

5.3 重复采集导致书籍重复

现象:同一本书在列表里出现两次。原因:增量判断没做好,或者书名作为唯一键但目标站改了书名。解决:用详情页 URL 作为唯一键,入库前先查这个 URL 是否已存在。如果 CMS 不支持 URL 去重,就在采集规则里加“标题 + 作者”联合去重。别用书名单独去重,同名书太多了。

5.4 移动端页面样式错乱

现象:PC 端正常,手机打开default_wap页面排版全乱。原因:default_wap里的 CSS 路径写的是相对路径,但移动端域名或目录层级不同,导致style.css没加载。解决:把 CSS 和 JS 路径改成绝对路径,或者用 CMS 的模板变量输出站点根 URL。另外检查TouchSlide.1.1.js是否在jquery.min.js之后加载,顺序反了会报$ is not defined。

5.5 采集任务跑着跑着停了

现象:定时任务前几天正常,后面不再更新。原因:目标站改了页面结构,选择器失效;或者服务器 PHP 进程超时。解决:先看采集日志最后一条成功记录的时间,再手工跑一次看报错。如果是选择器失效,更新规则里的 CSS 选择器;如果是超时,把单次采集数量调小,分批次跑。常见做法是每次只采 50 本书,跑完等 10 秒再跑下一批。

6. 进阶:用rank.html和搜索页做流量闭环

6.1 排行榜的排序字段与缓存

rank.html通常按点击量、收藏量、更新速度排序。你要在 CMS 后台确认这几个字段有没有被正确统计。点击量常见做法是每访问一次详情页就update hits = hits + 1,但高并发下会锁表。更稳的做法是用 Redis 计数,定时回写数据库。排行榜页面本身建议做缓存,比如 10 分钟更新一次,不然每次访问都查全表,数据库压力很大。

6.2 搜索页的关键词命中与性能

search.html对应的是关键词查询。小说站搜索量不小,如果直接LIKE '%关键词%'查书名和作者,数据量上百万后会很慢。常见优化是给书名和作者建全文索引,或者用专门的搜索服务。如果你只是小站,至少给novel_name和author字段加普通索引,并限制搜索词长度,别让用户搜一个“的”字就全表扫描。

6.3 一个验证采集是否健康的习惯

我一般会在采集任务跑完后,随机抽 3 本书,手工点开详情页和第一章,检查三件事:书名作者对不对、章节列表顺序对不对、正文有没有截断。这个习惯帮我省过很多次后悔药——有次采集规则把“下一页”的分页内容漏了,正文只采到第一页,抽检时发现了,不然读者看到一半断章,直接跑光。

从那以后我每次配完新规则,都强制走一遍“单本采集 → 抽检三章 → 再开全量”的流程。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询