什么是 DedeCMS 小说采集?
DedeCMS 的小说采集功能,允许你通过设置一系列规则,从其他网站上自动抓取小说的章节内容,并将其格式化后,发布到你自己的 DedeCMS 网站上,这个过程就像是一个“机器人”帮你复制粘贴,但速度更快,且能自动处理章节名、内容、分页等。
核心流程:
- 分析目标网站:找到你要采集的小说列表页和章节内容页。
- 编写采集规则:在 DedeCMS 后台,创建一个采集任务,并填写规则。
- 执行采集:运行任务,DedeCMS 根据规则抓取数据并存入数据库。
- 自动生成:系统自动为你生成小说首页、章节列表页和章节内容页。
采集规则的构成要素
一个完整的小说采集规则通常由以下几个部分组成,缺一不可:
- 任务名称:给你的采集任务起个名字,方便管理。
- 目标网址:
- 列表页网址:存放所有章节链接的页面。
https://www.example.com/book/123/ - 内容页网址:存放单个章节正文内容的页面,列表页中的每一个链接都指向一个内容页。
- 列表页网址:存放所有章节链接的页面。
- 列表页规则:用于从列表页中提取出所有章节的链接。
- 章节链接采集:使用
list标签,配合 XPath 选择器,定位到所有章节<a>标签的href属性。
- 章节链接采集:使用
- 内容页规则:用于从每一个章节的内容页中提取标题和正文。
- 采集:使用
title标签,配合 XPath 选择器,提取章节标题。 - 采集:使用
text标签,配合 XPath 选择器,提取章节正文。
- 采集:使用
- 发布栏目:采集到的小说内容需要发布到哪个 DedeCMS 的栏目下。
- 作者与来源:
- 作者:可以手动指定,也可以尝试从页面中抓取。
- 来源:通常设置为采集任务本身的名称,或者抓取网站名。
- 分页规则:如果章节正文有多页,需要设置规则来抓取所有分页的内容并合并。
- 过滤与替换:用于清理抓取到的内容,比如删除广告、版权信息、修改图片链接等。
如何编写具体的采集规则(实战演练)
我们以一个假设的小说网站为例,一步步编写规则。
假设目标网站结构:
- 列表页:
https://www.example.com/novel/abc/ - 章节链接:在
<div class="chapter-list">下的<a>标签里。 - 页的
<h1 class="chapter-title">标签里。 - :在
<div class="chapter-content">标签里。
第一步:分析并编写“列表页规则”
- 打开列表页:
https://www.example.com/novel/abc/ - 使用浏览器开发者工具 (F12):
- 切换到“元素” (Elements) 标签。
- 按下
Ctrl+F搜索chapter-list,找到包含所有章节列表的<div>。 - 观察其结构,你会发现里面有很多
<a>标签,每个<a>就是一个章节链接。
- 确定 XPath:
- 定位到
<div class="chapter-list">。 - 然后定位到它内部所有的
<a>- 完整的 XPath 可能是:
//div[@class='chapter-list']//a - 完整的 XPath 可能是:
- 定位到
- 在 DedeCMS 后台填写规则:
- 进入“采集” -> “采集管理” -> “增加新采集任务”。
- 任务名称:
示例小说采集 - 目标网址:
https://www.example.com/novel/abc/ - 列表页规则:
- 采集网址:留空,因为这是起始页。
- 链接:选择
list。 - 填写我们找到的 XPath:
//div[@class='chapter-list']//a - 链接网址:选择
list。 - 填写 XPath 提取
href的方式:@href。 - 网址过滤:可以留空,或者写上网站的域名,如
www.example.com,防止抓取到外部链接。
第二步:编写“内容页规则”
现在我们需要告诉 DedeCMS,抓取到的章节链接(如 https://www.example.com/novel/abc/chapter1.html和正文分别在哪。
- 打开一个章节页:
https://www.example.com/novel/abc/chapter1.html - 使用浏览器开发者工具:
- 搜索
chapter-title<h1>。 - 搜索
chapter-content,找到正文<div>。
- 搜索
- 确定 XPath:
- 标题 XPath:
//h1[@class='chapter-title'] - 正文 XPath:
//div[@class='chapter-content']
- 标题 XPath:
- 在 DedeCMS 后台填写规则:
- 内容页规则:
- 选择
title。 - XPath:
//h1[@class='chapter-title']
- 选择
- 选择
text。 - 填写正文 XPath:
//div[@class='chapter-content'] - 过滤规则:这里非常重要!通常需要加上
/text()来只提取文本内容,避免抓取到 HTML 标签本身,所以最终内容应为://div[@class='chapter-content']//text()。
- 选择
- 内容页规则:
第三步:设置发布选项
- 发布栏目:选择你事先在 DedeCMS 后台创建好的“小说”栏目。
- 作者:可以手动输入“佚名”,或者尝试从页面抓取(如果页面有作者信息的话)。
- 来源:可以输入“示例网站”。
- 内容简介:可以手动编写,或者尝试从列表页抓取小说简介。
第四步:处理分页(重要!)
很多小说网站为了SEO,会将一个章节分成多页,内容页里有“下一页”按钮。
- 分析分页结构:在章节内容页的底部,找到“下一页”按钮的
<a>- 编写分页规则:
- 页规则”中,找到
分页设置区域。 - 下一页链接:填写“下一页”按钮的 XPath。
//a[text()='下一页']或//div[@class='page-nav']//a[contains(text(), '下一页')]。 - 列表网址:选择
list。 - 填写提取
href的方式:@href。 - 内容网址:选择
text。 - 填写提取正文的 XPath,和之前一样:
//div[@class='chapter-content']//text()。 - 过滤规则:同样加上
/text()。
- 编写分页规则:
注意:你需要为“下一页”和“最后一页”都设置好规则,确保能抓取到所有分页内容。
第五步:过滤与替换
质量的关键,在“内容页规则”的 过滤与替换 标签页中,你可以进行设置。
- 过滤广告:如果正文里夹杂着广告
<div>,你可以用 XPath 找到它并过滤掉。- 过滤 XPath:
//div[@class='ad-banner']
- 过滤 XPath:
- 替换文本:
- 替换:
www.example.com,替换为:你的域名.com(修改图片或外部链接的域名)。 - 替换:
(本章完),替换为:空 (删除一些固定的结束语)。
- 替换:
- 过滤JS/CSS:通常勾选“过滤JS代码”和“过滤CSS代码”。
常见问题与注意事项
- 网站反爬虫:目标网站可能会设置防采集机制,如 IP 封禁、验证码等。
- 解决方案:使用代理 IP、降低采集速度(在任务设置中调整)、分散采集时间。
- 网站结构变动:目标网站一旦改版,XPath 就会失效,导致采集失败。
- 解决方案:需要定期检查并更新你的采集规则。
- 编码问题:目标网站可能是
GBK编码,而你的网站是UTF-8。- 解决方案:在任务设置中,确保选择正确的网页编码。
- 内容重复:采集过来的内容可能和你网站已有的内容重复,被搜索引擎判定为垃圾内容。
- 解决方案:采集后,务必对内容进行二次加工,比如手动修改开头、或者使用伪原创工具。
- 版权问题:这是最重要的一点! 未经授权采集他人享有版权的小说内容是违法的。
- 解决方案:仅用于个人学习测试,或者采集已明确允许转载或已进入公共版权领域的内容,商业网站请务必获得授权。
- 规则调试:写完规则后,不要直接“开始采集”,一定要先使用“测试”功能,它会抓取第一章的内容让你预览,确认无误后再进行批量采集。
规则示例(模板)
你可以根据这个模板,修改其中的 XPath 来适应不同的网站。
任务名称:XX小说网-都市小说
目标网址:https://www.xx.com/book/123456/
列表页规则:
- 采集网址:(留空)
- 链接:
list //div[@id='list']//dd//a- 链接网址:
list @href- 网址过滤:
www.xx.com页规则**: - 标签:
title - 内容:
//div[@class='bookname']//h1
- 标签:
- 标签:
text - 内容:
//div[@id='content']//text() - 过滤规则:
- 过滤:
//script(过滤JS) - 过滤:
//div[@class='ad'](过滤广告) - 替换:
src="https://www.xx.com/images/替换为src="https://你的域名.com/images/
- 过滤:
- 标签:
分页设置:
- 下一页链接:
//a[text()='下一页'] - 列表网址:
list @href- 内容网址:
text //div[@id='content']//text()
希望这份详细的指南能帮助你成功设置 DedeCMS 的小说采集规则!
