zoukankan      html  css  js  c++  java
  • 关关采集器规则编写教程(最详细的教程)

      首先需要了解下 关关采集器通用替代符

       1.  d*  表示数字

       2.  s*  空格或换行

       3.  .+? 表示不需要的字符

       4.   .* 表示字符

       5.  ()  表示需要截取的部分

       6.    ((.| )*) 章节内容截取

       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.寻找目标站 这里我们拿 遮天小说吧 http://www.zhetianxs8.com为例子  

                2. 复制原有规则为采集模板 zhetianxs8.xml 重新复制一份

                3.打开关关规则编辑器  选择 zhetianxs8复件.xml 读取 

                4. 开始编写规则.

    第二步  1.RULEID(规则编号)这个任意写即可

                2.GetSiteName(站点名称)这里我们写zhetianxs8

                3.GetSiteCharset(站点编码) 这里我们打开www.zhetianxs8.com源代码查找 charset= 得到charset=gbk这个gbk就是我们需要的站点编码
                4.GetSiteUrl(站点地址)目标站地址 写入http://www.zhetianxs8.com

                5.NovelSearchUrl(站点搜索地址) 这个搜索栏地址的获得,按照每个网站程序的不同,适当的修改(也可以忽略)

                6. NovelListUrl(站点最新列表地址) 目标站点显示更新的网址 例如 http://www.zhetianxs8.com/modules/article/toplist.php?sort=lastupdate

               7.NovelList_GetNovelKey(从最新列表中获得小说编号)在这个规则中我们要获取小说名和小说编号 例如  这个地址查看源文件,我们编写这个规则的时候找到想要获得的内容所在的地方,比如我们打开地址看到想要获得的内容的第一本小说的名字是“遮天”我们在源文件里面找到“遮天”

         

    <ul>
    <li class="t1 red12">1</li>
    <li class="tt3"><a href=http://www.zhetianxs8.com/book/1258.html]http://www.zhetianxs8.com/book/1258.html title="《遮天》
    小说内容提要:    【作品简介】:
    " target="_blank">遮天</a></li>

    <li class="t5"><a href="/bookreader/10071-3622060.html">遮天</a></li>
    <li class="t4"><a target="_blank" href="http://www.zhetianxs8.com/modules/article/authorarticle.php?author]=辰东">辰东</a></li>
    <li class="t7">3624007</li>
    <li class="t6">连载中</li>
    <li class="t8">12-13-09 22:13</li>

    </ul>

    以上代码中 我们要找到 <li class="tt3"><a href=http://www.zhetianxs8.com/book/1258.html title="《遮天》 把这段代码 改成

    <li class="tt3"><a href=http://www.zhetianxs8.com/book/(d*).html title="《(.+?)》  (d*) 表示小说编号 (.+?) 表示小说名 测试下 获取正常
    8.NovelUrl(小说信息页地址)这个很简单  比如http://www.zhetianxs8.com/book/1258.html这本小说 我们可以看到的 我们改下 将里面的1258 换成 {NovelKey} 一般情况表示小说编号 就是  http://www.zhetianxs8.com/book/{NovelKey}.html

     9.NovelErr(小说信息页错误识别标记) 这个我们随便输入一个没的小说的编号如http://www.zhetianxs8.com/book/1234465460.html这样我们获得的错误标记就是:对不起,该文章不存在! 
    10. NovelName(获得小说名称正则)我们随便打开一本小说http://www.zhetianxs8.com/book/1258.html查看源代码 获得小说名称 这个我们可以从固定模式着手 比如我们刚才打开的 遮天 这本小说 我们看到他的固定小说名格式是《遮天》 那我们在源代码里 找到《遮天》 这个 我们得到的内容是

        《<a href="/book /1258.html" id="htmltimu" title="遮天">遮天</a>》 改成 《<a href=" /book/d*.html" id="htmltimu" title=".+?">(.+?)</a>》

     NovelAuthor(获 得小说作者)、LagerSort(获得小说大类)、SmallSort(获得小说大类)、NovelIntro(获得小说简介)、 NovelKeyword(获得小说主角(关键字))、NovelDegree(获得写作进程)、NovelCover(获得小说封面) 这些同 10. 一样获取即可

    11.NovelInfo_GetNovelPubKey(获得小说公众目录页地址)这个的地址获得跟上面的一样的方法

    12.PubIndexUrl(公众目录页地址) 这个我说明一下,这个的用法这个一般是在知道采集目标站的动态地址的时候用到,如果不知道对方动态地址的话就在这个里面写入{NovelPubKey} 如果知道动态路径比如说http://www.zhetianxs.com这个站的没本小说的章节目录的动态地址是那么 PubIndexUrl 这个的规则就是

     http://www.zhetianxs8.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(获得章节名) 这个我们拿一段来说明<li><strong><a href="/bookreader/1258-3467015.html">仙墓</a></strong></li>

    如果有碰到时间、日期、更新字数什么的我们直接忽略,因为这些不是我们要获得的内容,这个我们可以用 .+? 来表示。 好了我们吧上面的那一段改下改成表达式

    <li><strong><a href=".+?.html">(.+?)</a></strong></li>

    不是单行的话我们用s* 来表示N个换行符

    16.PubChapter_GetChapterKey(获得章节地址(章节编号))这里说明下 这个里面的章节编号是在下面的 PubContentUrl(章节内容页地址)用到,那么这里我们需要获得的是章节地址分析得到

    <li><strong><a href=" (d*.html) ">.+? </a></strong></li>

    章节地址那为什么我们还有用到章节名的呢?这个说下主要就是为了避免获得的章节名跟获得的章节地址不匹配。 
    如果是章节页是乱序的这里就要获得章节编号了(强烈见意用户用获得章节编号)
    我们说下章节编号的写法 其实并不麻烦只需要稍微改下就行了。 

    <li><strong><a href="/zhetianxs8/d*-(d*).html">.+?</a></strong></li>改成这样就可以了

    17. PubContentUrl(章节内容页地址) 这里我拿http://www.zhetianxs8.com/book/1258-3287009.html这个来说明下该怎么用,其中的1258 这个是小说编号这里我们用{NovelKey} 替代,3287009这个就是在 PubChapter_GetChapterKey 里面获得的 章节编号我们{ChapterKey} 替代,以后我们分两种写法说明

    http://www.zhetianxs8.com/bookreader/{NovelKey}-{ChapterKey}.html

    注: 这种写法 PubChapter_GetChapterKey里必需是获得章节编号的如 “<li><strong><a href="/book/d*-(d*).html">.+?</a></strong></li>” 

    或者直接用 

    {ChapterKey}

    18. PubContentText(获得章节内容) 这个获得方法我们就拿http://www.zhetianxs8.com/book/1258-3287009.html这个地址来说吧,打开源代码我们看到 

    </p>

    </div>

    <div class="novel_content">

    &nbsp;&nbsp;&nbsp;&nbsp;辰东_遮天小说吧<br />

    ................ ................ 中间省了............ ................ .................

    &nbsp;&nbsp;&nbsp;&nbsp;完

    </div>

    <div class="novel_bottom"> 
    直接改成 <div class="novel_content">((.| )+?)<div class="novel_bottom"> 

    ((.| )+?)为我们要获取的内容,

    19.PubContentImages(章节内容中提取图片正则) 章节中图片可以直接用我们上面提到的万能图片规则

    <[^<]*((?<=<(?:img|IMG)[^>]*(?:(?:src|SRC)(?:s*=s*(?:["']?))))(?:[^s"'>]*).(?:jpg|gif|jpeg|bmp|png|GIF|JPG))[^>]*>

    20.出现空章节情况有可能是目标站正好重启网站或者你的采集IP被封等原因
    如 果不是以上原因,请先检查你采集的章节是否是图片章节,如果你的PubContentImages(章节内容中提取图片) 没有获得图片章节内容的话软件 就会检查你的采集文字内容 PubContentText(获得章节内容)这个里面的正则的匹配,如果 PubContentImages(章节内容中提 取图片) 跟PubContentText(获得章节内容) 都没有匹配的内容,那么就出现了上面我们说的空章节的原因。

  • 相关阅读:
    (网页)中的简单的遮罩层
    (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    (网页)jQuery的时间datetime控件在AngularJs中使用实例
    Maven Myeclipse 搭建项目
    MyBatis 环境搭建 (一)
    java 常用方法
    XML 基础
    JS BOM
    js 事件
    js 的使用原则
  • 原文地址:https://www.cnblogs.com/zimin1985/p/3412322.html
Copyright © 2011-2022 走看看