關關采集器規則編寫教程(最詳細的教程)


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

   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.尋找目標站 這里我們拿 遮天小說吧 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">((.|\n)+?)<div class="novel_bottom"> 

((.|\n)+?)為我們要獲取的內容,

 

19.PubContentImages(章節內容中提取圖片正則) 章節中圖片可以直接用我們上面提到的萬能圖片規則

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

 

20.出現空章節情況有可能是目標站正好重啟網站或者你的采集IP被封等原因
如 果不是以上原因,請先檢查你采集的章節是否是圖片章節,如果你的PubContentImages(章節內容中提取圖片) 沒有獲得圖片章節內容的話軟件 就會檢查你的采集文字內容 PubContentText(獲得章節內容)這個里面的正則的匹配,如果 PubContentImages(章節內容中提 取圖片) 跟PubContentText(獲得章節內容) 都沒有匹配的內容,那么就出現了上面我們說的空章節的原因。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM