关于关关采集器采集规则
相信小说网站的站长很多都使用过关关采集器,刚开始使用的时候都是直接使用别人给的规则,直接拿来用。但是当发现一个不错的网站时,奈何又没有对应的采集规则怎么办?求朋友帮忙整一个规则,或者是上某宝花钱买一个?其实都没必要,求人不如求己,只要学会写一个规则,其他的网站的采集规则都大同小异。以下是关于关关采集器采集规则的几点说明。
首先需要了解下 关关采集器通用替代符
1. \d* 表示数字
2. \s* 空格或换行
3. .+? 表示不需要的字符
4. .* 表示字符
5. () 表示需要截取的部分
6. ((.|\n)*) 章节内容截取
7. . 表示单个字符
8. $ 表示结束字符 例如正则表达式weasel$ 能够匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。
9. ^ 表示一行的开始
10. < [^<]*((?<=<(?:img|IMG)[^>]*(?:(?:src|SRC)(?:\s*=\s*(?: ["']?))))(?:[^\s"'>]*)\.(?:jpg|gif|jpeg|bmp|png|GIF|JPG)) [^>]*> 万能图片代码
第一步
1.寻找目标站 这里我们拿 帝王小说 https://www.aidelai.cc/为例子
2.复制原有规则为采集模板 aidelai.xml 重新复制一份
3.打开关关规则编辑器 选择 xs8xs.xml 读取
4.开始编写规则.
第二步
1.RULEID(规则编号)这个任意写即可
2.GetSiteName(站点名称)这里我们写xs8xs
3.GetSiteCharset(站点编码) 这里我们打开www.xs8xs.com源代码查找 charset= 得到charset=gbk这个gbk就是我们需要的站点编码
4.GetSiteUrl(站点地址)目标站地址 写入http://www.xs8xs.com
5.NovelSearchUrl(站点搜索地址) 这个搜索栏地址的获得,按照每个网站程序的不同,适当的修改(也可以忽略)
6. NovelListUrl(站点最新列表地址) 目标站点显示更新的网址 例如 http://m.xs8xs.com/top/lastupdate_1/
7.NovelList_GetNovelKey(从最新列表中获得小说编号)在这个规则中我们要获取小说名和小说编号 例如 这个地址查看源文件,我们编写这个规则的时候找到想要获得的内容所在的地方,比如我们打开地址看到想要获得的内容的第一本小说的名字是“遮天”我们在源文件里面找到“遮天”
例如:<h3><a href="http://www.xs8xs.com/0/73/">遮天</a></h3>
则该值为: <h3><a href="http://www.xs8xs.com/\d/(\d*)/">.+?</a></h3>
8.NovelUrl(小说信息页地址)这个很简单 比如http://m.xs8xs.com/book/449/这本小说 我们可以看到的 我们改下 将里面的449 换成 {NovelKey} 一般情况表示小说编号 就是 http://m.xs8xs.com/book/449/{NovelKey}/
9.NovelErr(小说信息页错误识别标记) 这个我们随便输入一个没的小说的编号如http://www.xs8xs.com/0/7777777/这样我们获得的错误标记就是:对不起,该文章不存在!
10. NovelName(获得小说名称正则)我们随便打开一本小说http://www.xs8xs.com/0/73/查看源代码 获得小说名称 这个我们可以从固定模式着手 比如我们刚才打开的 遮天 这本小说 我们看到他的固定小说名格式是《遮天》 那我们在源代码里 找到《遮天》 这个 我们得到的内容是
<div class="pic"><img src="/files/article/image/0/73/73s.jpg" width="185" height="245" /></div>
<div class="introduce">
<h1>只手遮天</h1>
<p class="bjt"></p>
<p class="bq"><span>更新:2019-08-20 07:26</span><span>作者:<a href="/modules/article/authorarticle.php?author=胜己">胜己</a></span><span>状态:连载</span><span>点击:0</span></p>
设为该值:<h1>(.+?)</h1>
NovelAuthor(获 得小说作者)
LagerSort(获得小说大类)
SmallSort(获得小说大类)
NovelIntro(获得小说简介)
NovelKeyword(获得小说主角(关键字))
NovelDegree(获得写作进程)、
NovelCover(获得小说封面) 这些同 10. 一样获取即可
11.NovelInfo_GetNovelPubKey(获得小说公众目录页地址)这个的地址获得跟上面的一样的方法
http://m.xs8xs.com/book/73/
12.PubIndexUrl(公众目录页地址) 这个我说明一下,这个的用法这个一般是在知道采集目标站的动态地址的时候用到,如果不知道对方动态地址的话就在这个里面写入{NovelPubKey} 如果知道动态路径比如说http://www.xs8xs.com这个站的没本小说的章节目录的动态地址是那么 PubIndexUrl 这个的规则就是
http://www.xs8xs.com/modules/article/reader.php?aid={NovelPubKey}
PubVolumeSplit(分割分卷)这个分割分卷 有写地方需要注意到 如果分割分卷的正则没对 那么有可能 对于下面的 获得章节名那些有很大的影响 这里 我们获得 分割部分的代码呢 按我的经验呢 是找到第一个 分卷 跟下面的分卷 查看他们的共同处 在我们分析这个目录章节里面的源代码 可以看出他们有个共同点 拿这一段来说明下
<dt>
<strong>遮天正文
</strong>
</dt>
单一代码为 <dt>
<strong> 修改正则 为<dt>\s*<strong>
其中的\s* 表示 匹配 与任何白字符匹配,包括空格、制表符、分页符等 也就是说 在 </ul> 与<dt><strong> 之间 不管有多少个空格 都可以用 \s* 来表示
14.PubVolumeName(获得分卷名) 想要获得准确的分卷名,必须在上面的分割部分的正则必须正确,一般情况下分割部分跟分卷名是在一块的,上面我们说明分割部分用到的
<dt>
<strong>遮天正文
</strong>
</dt>
大家如果有注意看到的话 会发现 里面有 我们在这一步里面要获得的分卷名
我们 改下代码 <dt>\s*<strong>(.+?)</strong>\s*</dt>
15. PubChapterName(获得章节名)
这里我列出前面几个章节的源码
<div class="clearfix dirconone">
<ul>
<li class="chapter"><a href="http://www.xs8xs.com/0/73/25234.html" title="2019-08-20 07:23更新,共5458字">第一章 断臂重生</a></li>
<li class="chapter"><a href="http://www.xs8xs.com/0/73/25235.html" title="2019-08-20 07:23更新,共3895字">第二章 左臂中的灵魂</a></li>
<li class="chapter"><a href="http://www.xs8xs.com/0/73/25237.html" title="2019-08-20 07:23更新,共3893字">第三章 小人得志</a></li>
<li class="chapter"><a href="http://www.xs8xs.com/0/73/25239.html" title="2019-08-20 07:23更新,共2793字">第四章 你敢不给试试!</a></li>
<li class="chapter"><a href="http://www.xs8xs.com/0/73/25241.html" title="2019-08-20 07:23更新,共3277字">第五章 去那赚钱</a></li>
所以可以写成这样:
<li class="chapter"><a href="http://www.xs8xs.com/\d*/\d*/\d*.html" title=".+?">(.+?)</a></li>
16.PubChapter_GetChapterKey(获得章节地址(章节编号))这里跟章节名的正则很类似
<li class="chapter"><a href="http://www.xs8xs.com/\d*/\d*/(\d*).html" title=".+?">.+?</a></li>
17. PubContentUrl(章节内容页地址) 这里我拿http://www.xs8xs.com/0/73/25234.html这个来说明下该怎么用,其中的73 这个是小说编号这里我们用{NovelKey} 替代,25234这个就是在 PubChapter_GetChapterKey 里面获得的 章节编号我们{ChapterKey} 替代
http://www.xs8xs.com/{NovelKey/1000}/{NovelKey}/{ChapterKey}.html
18. PubContentText(获得章节内容) 这个获得方法我们就拿http://www.xs8xs.com/0/73/25235.html这个地址来说吧,打开源代码我们看到
<p class="articlecontent" id="articlecontent"> 第二章左臂中的灵魂<br />
<br />
妈的,不是被人当做高科技试验品了,是灵异事件啊,有鬼啊赵龙脑子嗡的一下,这个声音粗犷中带着一股威势,桀骜不驯,天老大,他老二的霸气,无边的豪气跟霸气。<br />
<br />
................ ................ 中间省了............ ................ .................
完
</div>
直接改成 <p class="articlecontent" id="articlecontent">((.|\n)+?)</p>
((.|\n)+?)为我们要获取的内容.
19.PubContentImages(章节内容中提取图片正则) 章节中图片可以直接用我们上面提到的万能图片规则
<[^<]*((?<=<(?:img|IMG)[^>]*(?:(?:src|SRC)(?:\s*=\s*(?:["']?))))(?:[^\s"'>]*)\.(?:jpg|gif|jpeg|bmp|png|GIF|JPG))[^>]*>
20.出现空章节情况有可能是目标站正好重启网站或者你的采集IP被封等原因
如 果不是以上原因,请先检查你采集的章节是否是图片章节,如果你的PubContentImages(章节内容中提取图片) 没有获得图片章节内容的话软件 就会检查你的采集文字内容 PubContentText(获得章节内容)这个里面的正则的匹配,如果 PubContentImages(章节内容中提 取图片) 跟PubContentText(获得章节内容) 都没有匹配的内容,那么就出现了上面我们说的空章节的原因。
好好练练手,其他网站也是类似的写法。
可以试试如下网站
https://www.xjdajuyuan.com/
https://www.wuluniu.com/
等等