最新消息:

[转]阅读APP书源制作第4课:书籍页规则

学习 林夕 188浏览 0评论

上节讲了搜索页的规则怎么写,这节,说下书籍页规则怎么写

0×1. 演示案例


0×2. 进入书籍页

随便打开了一个小说,然后就看到了书籍的详细介绍页面,如下:

上面图片中,红色框框里面就是书籍页要获取的内容,包括了 书名、作者、书的封面、简介和章节目录。

一般看网页代码有两种方式,一种是在网页上右键,选择”查看源代码”,还要一种就是之前介绍的按 F12,这里因为要看的代码比较多,我们就使用右键查看。

<!--BOOKcat-->

<div class="cl" style="height:8px;"></div>
<div class="bdtop"></div>
<div class="bdsub">
    <dl id="content">

<div class="adhtml"><script>show_book();</script></div>
<dd><h1>帝霸 全文阅读</h1></dd>
<dd><div class="fl">
<a class="hst" href="https://www.x23us.com/html/64/64889/">

<img style="padding:7px; border:1px solid #E4E4E4; width:120px; height:150px; margin:0 25px 0 15px;" alt="帝霸最新章节列表,帝霸全文阅读" src="/files/article/image/64/64889/64889s.jpg"  onerror="this.src='/modules/article/images/nocover.jpg'"/>

</a>
</div>
<div class="fl" style="width:550px;"><style>.pl{background:#F2F2F2; padding-left:10px;}</style>
<p><table cellspacing="1" cellpadding="0" bgcolor="#E4E4E4" id="at">
<tr><th>文章类别</th><td> <a href="/class/8_1.html">恐怖灵异</a></td><th>文章作者</th><td> 厌笔萧生</td><th>文章状态</th><td> 连载中</td></tr>
<tr><th>收 藏 数</th><td> 4586</td><th>全文长度</th><td> 10972120 字</td><th>最后更新</th><td> 2018-05-07</td></tr>
<tr><th>总点击数</th><td> 2579470</td><th>本月点击</th><td> 1379</td><th>本周点击</th><td> 123</td></tr>
<tr><th>总推荐数</th><td> 18837</td><th>本月推荐</th><td> 482</td><th>本周推荐</th><td> 50</td></tr>
</table></p>
<p class="btnlinks">
<a class="read" href="https://www.x23us.com/html/64/64889/" title="帝霸最新章节更新列表">章节列表</a>
<a href="Javascript:void(0);" onclick="javascript:Ajax.Request('https://www.x23us.com/modules/article/addbookcase.php?bid=64889',{onComplete:function(){alert(this.response.replace(/<br[^<>]*>/g,'\n'));}});">加入书架</a>
<a href="Javascript:void(0);" onclick="javascript:Ajax.Request('https://www.x23us.com/modules/article/uservote.php?id=64889',{onComplete:function(){alert(this.response.replace(/<br[^<>]*>/g,'\n'));}});">推荐本书</a>
<a href="https://xiazai.x23us.com/down/64889?fname=帝霸" rel="nofollow" title="帝霸 TXT 下载">TXT 下载</a>
<a class="ji" href="https://www.x23us.com/jifen.html">获取积分</a>
</p>

</dd><div class="cl"></div>
<dd style="padding-top:10px;">
<!-- Baidu Button BEGIN --><div class="jia fl"><script>info_share();</script></div>
<div class="mobile fl"></div></dd>
<!-- Baidu Button END -->

<div class="cl"></div><dd style="padding:10px 30px 0 25px;">
<p class="pl"><b>帝霸内容简介:</b></p>

<table width="740px" border="0" cellspacing="0" cellpadding="0" style="padding:5px 5px 5px 5px;">
  <tr> 
    <td align="right" style="padding:5px 5px 5px 5px;"><script>show_book2();</script></td>
    <td align="left" style="padding:5px 5px 5px 5px;"><script>show_book2();</script></td>
  </tr>
</table>

<p>    天若逆我,我必封之,神若挡我,我必屠之——站在万族之巅的李七夜立下豪言!
    这是属于一个平凡小子崛起的故事,一个牧童走向万族之巅的征程。
    在这里充满神话与奇迹,天魔建起古国,石人筑就天城,鬼族铺成仙路,魅灵修补神府……
</p><p style="display:none" id="sidename">分享书籍《帝霸》作者:厌笔萧生</p>


<p style="height:10px;"></p>
<p>      关键字:<u>帝霸 厌笔萧生</u> <u>帝霸全文阅读</u> <u>帝霸 TXT 下载</u></p>
<p style="font-weight:bold; font-size:14px;">      帝霸最新章节:<a href="https://www.x23us.com/html/64/64889/">第 3143 章黑暗时刻</a></p>
<p style="height:10px;"></p>
</dd>

上面这段代码,就是之前图片所对应的,我们现在来一个一个写。


0×3. 书籍名

书籍名即”ruleBookName”
**
这本的名字叫”帝霸”,我们找最容易写的标签,然后找到了下面这个位置的:

<div class="cl" style="height:8px;"></div>
<div class="bdtop"></div>
<div class="bdsub">
    <dl id="content">

<div class="adhtml"><script>show_book();</script></div>
<dd><h1>帝霸 全文阅读</h1></dd>
<dd><div class="fl">

我们看到 h1 这个标签里面有书名,我们现在来定位,查看有没有重复的 h1 标签,怎么查看,代码那么多,我们可以 Ctrl+F,然后输入 h1 搜索下,结果就显示这个一个 h1 标签,那我们可以这么写:

tag.h1@text //获取第一个 h1 标签里面的文本内容

但是实际下,h1 标签里面的文本内容是”帝霸 全文阅读”,这就不对了,我们要把”全文阅读”这四个字去掉,这里要用到一个简单的正则,可以这么写

tag.h1@text#全文阅读 //获取第一个 h1 标签里面的文本内容,但是不包括“全文阅读”这 4 个字

0×4. 书的作者

书的作者即”ruleBookAuthor”
**
这个网页书的作者是显示在一个表格里面的,我们就找到这个表格的代码,如下:

<div class="fl" style="width:550px;"><style>.pl{background:#F2F2F2; padding-left:10px;}</style>
<p>
  <table cellspacing="1" cellpadding="0" bgcolor="#E4E4E4" id="at">
        <tr><th>文章类别</th><td> <a href="/class/8_1.html">恐怖灵异</a></td><th>文章作者</th><td> 厌笔萧生</td><th>文章状态</th><td> 连载中</td></tr>
        <tr><th>收 藏 数</th><td> 4586</td><th>全文长度</th><td> 10972120 字</td><th>最后更新</th><td> 2018-05-07</td></tr>
        <tr><th>总点击数</th><td> 2579470</td><th>本月点击</th><td> 1379</td><th>本周点击</th><td> 123</td></tr>
        <tr><th>总推荐数</th><td> 18837</td><th>本月推荐</th><td> 482</td><th>本周推荐</th><td> 50</td></tr>
    </table>
</p>

现在们看到作者名字是在一个 td 标签里面,叫”厌笔萧生”,本身没有 class 和 di 元素,没有办法定位,所以我们要找它的上级标签,看看有没有 class 或者 id 元素,经过一番寻找,我们看到它的上级 div 标签里面有 class 元素,即 class=”fl”,我们可以用这个定位,但是使用这个 class=”fl”之前,还是要代码里面看看有没有重复的,使用 Ctrl+F,搜索之后发现,一共有 3 个 class=”fl”,我们要用到的是第 3 个,然后我们还要获取 td 这个标签里面的内容,我们看下这个包含作者的 td 在这个 div 里面是第几个,数了下,是第 2 个,接下来,我们可以这样写:

class.fl.2@tag.td.1@text  //这里的意思就是获取第 3 个 class="fl"元素对应 div 标签里面的第 2 个 td 标签里面的文本内容

0×5. 书籍封面

书籍封面即”ruleCoverUrl”
**
现在我们来找书籍的封面图片,找 img 这个标签,然后我们找到了这个地方:

<div class="adhtml"><script>show_book();</script></div>
<dd><h1>帝霸 全文阅读</h1></dd>
<dd><div class="fl">
<a class="hst" href="https://www.x23us.com/html/64/64889/">
<img style="padding:7px; border:1px solid #E4E4E4; width:120px; height:150px; margin:0 25px 0 15px;" alt="帝霸最新章节列表,帝霸全文阅读" src="/files/article/image/64/64889/64889s.jpg"  onerror="this.src='/modules/article/images/nocover.jpg'"/>
</a>
</div>

我们发现,这个封面 img 的上级 a 标签是有 class 的,即 class=”hst”,而且通过搜索,我们发现 class=”hst”只有 1 个,那我们可以这样写:

class.hst@tag.img@src //获取 class="hst"元素标签里面 img 标签里面的图片

0×6. 书籍简介

书籍简介即”ruleIntroduce”
**
现在我们来找书籍简介的代码,我们可以找到这个地方:

<dd style="padding-top:10px;">
<!-- Baidu Button BEGIN --><div class="jia fl"><script>info_share();</script></div>
<div class="mobile fl"></div></dd>
<!-- Baidu Button END -->
<div class="cl"></div><dd style="padding:10px 30px 0 25px;">
<p class="pl"><b>帝霸内容简介:</b></p>
<table width="740px" border="0" cellspacing="0" cellpadding="0" style="padding:5px 5px 5px 5px;">
  <tr> 
    <td align="right" style="padding:5px 5px 5px 5px;"><script>show_book2();</script></td>
    <td align="left" style="padding:5px 5px 5px 5px;"><script>show_book2();</script></td>
  </tr>
</table>
<p>    天若逆我,我必封之,神若挡我,我必屠之——站在万族之巅的李七夜立下豪言!
    这是属于一个平凡小子崛起的故事,一个牧童走向万族之巅的征程。
    在这里充满神话与奇迹,天魔建起古国,石人筑就天城,鬼族铺成仙路,魅灵修补神府……
</p><p style="display:none" id="sidename">分享书籍《帝霸》作者:厌笔萧生</p>
<p style="height:10px;"></p>
<p>      关键字:<u>帝霸 厌笔萧生</u> <u>帝霸全文阅读</u> <u>帝霸 TXT 下载</u></p>
<p style="font-weight:bold; font-size:14px;">      帝霸最新章节:<a href="https://www.x23us.com/html/64/64889/">第 3143 章黑暗时刻</a></p>
<p style="height:10px;"></p>
</dd>

但是发现个问题,书籍简介被 p 标签包含,但是他的上级标签是 dd 标签,这个 dd 标签是没有 class 或者 id 的,怎么办?这样我们需要找到 dd 的上级标签,用上级标签的 class 或者 id 来定位 dd 标签,再来定位 p 标签。
小技巧:有的人不熟悉 html 的标签,找不到,这里可以用 F12,在浏览器右边看代码的树形结构,如下:

通过上图,我们可以发现,dd 标签的上级标签是< dl id=”content” >这个,那我们就可以用 id=”content”来进行定位 dd 标签,dd 标签在< dl id=”content” >这个标签下面是第 4 个,然后我们数下第 4 个 dd 标签里面包含简介的 p 标签在第 4 个 dd 标签里面是第几个,数了下,是第 2 个,接下拉我们可以这样写:

id.content@tag.dd.3@tag.p.1@text //获取 id="content"这个 dl 标签里面的第 4 个 dd 标签里面第 2 个 p 标签里面的文本内容

0×7. 章节列表地址

章节列表地址即”ruleChapterUrl”
**
我们找一下这个书籍的章节列表的连接地址,找到如下代码:

<p class="btnlinks">
<a class="read" href="https://www.x23us.com/html/64/64889/" title="帝霸最新章节更新列表">章节列表</a>
<a href="Javascript:void(0);" onclick="javascript:Ajax.Request('https://www.x23us.com/modules/article/addbookcase.php?bid=64889',{onComplete:function(){alert(this.response.replace(/<br[^<>]*>/g,'\n'));}});">加入书架</a>
<a href="Javascript:void(0);" onclick="javascript:Ajax.Request('https://www.x23us.com/modules/article/uservote.php?id=64889',{onComplete:function(){alert(this.response.replace(/<br[^<>]*>/g,'\n'));}});">推荐本书</a>
<a href="https://xiazai.x23us.com/down/64889?fname=帝霸" rel="nofollow" title="帝霸 TXT 下载">TXT 下载</a>
<a class="ji" href="https://www.x23us.com/jifen.html">获取积分</a>
</p>

我们现在要获取第一个 a 标签里面的网址,我们发现,这个 a 标签自带了一个 class 元素,而且这个 class=”read”在整个网页代码中没有重复的,那我们就可以直接用这个 class 写了:

class.read@href //获取 class="read"这个标签里面的网址连接

0×8. 章节目录列表

章节目录列表即”ruleChapterList”
**
上面的章节列表地址我们写好了,现在我们也跟着这个跳转地址进入到章节目录的页面,来写章节目录的列表格式,然后我们会看到很多的章节名称。

其实这个步骤和之前讲的搜索结果页的样式原理是一样的,还是可以用浏览器的 F12 查看,鼠标移动找到单个的结果的代码,如下图:

我们可以看到,这里的目录是以表格的形式呈现的,有一对对的 td 标签里面的 a 标签代表每一个章节,而且我们发现每一对 td 标签都自带了 class 元素,即 class=”L”,那我们接下来可以这么写:

class.L@tag.a //获取 class="L"这个元素标签里面的 a 标签内容

0×9. 章节名称

章节名称即:”ruleChapterName”
**
因为我们上面已经定位到了每个章节的 a 标签,我们现在只要获取这个 a 标签里面的章节名称和章节的链接就可以了,我们可以这么写:

text //获取每个 a 标签里面的文本内容

0×10. 章节链接

章节链接即:”ruleContentUrl”
**
原理同上,这么写:

href //获取每个 a 标签里面的链接

0×11. 章节具体内容

章节具体内容即:”ruleBookContent”

我们现在还要最后一个东西要写,就是获取章节的内容,我们随便点个章节,进入正文页面,然后右键查看源码,找到正文内容部分,如下:

<dd id="contents">契子<br /><br />   
“咩——咩——咩——”一声声学羊叫的声音在寂静的山岭之中回荡着。<br /><br />    
李七夜爬上了山岗,夜风又急又冷,但是,此时他焦急得一身是汗。十三岁的他,手脚并用地爬上山峦,夜色显得特别的孤怜,让人毛骨悚然。<br /><br />    
虽然夜色显得可怕,。。。。。。。
<del datetime="2018-05-07T11:32:40+00:00">(后面的没用,我就不放到这里了)</del>

我们看到正文部分也是被 dd 标签包含的,而且这个 dd 标签有个 id 元素,即 id=”contents”,所有我们可以这么写:

id.contents@textNodes

0×12. 本节规则整理

以上就把书籍页的相关规则写玩了,我们来整理下:

"ruleBookAuthor": "class.fl.2@tag.td.1@text",
    "ruleBookContent": "id.contents@textNodes",
    "ruleBookName": "tag.h1@text",
    "ruleChapterList": "class.L@tag.a",
    "ruleChapterName": "text",
    "ruleChapterUrl": "class.read@href",
    "ruleContentUrl": "href ",
    "ruleCoverUrl": "class.hst@tag.img@src ",
    "ruleFindUrl": "",
    "ruleIntroduce": "id.content@tag.dd.3@tag.p.1@text",

0×13. 规则整合

然后,我们把前两节写的规则和今天的整合在一起,就是一个完整的书源规则了:

{
    "bookSourceName": "顶点小说",
    "bookSourceUrl": "https://www.x23us.com/",
    "ruleSearchUrl": "https://www.x23us.com/modules/article/search.php?searchtype=keywords&searchkey=searchKey",
    "ruleBookAuthor": "class.fl.2@tag.td.1@text",
    "ruleBookContent": "id.contents@textNodes",
    "ruleBookName": "tag.h1@text",
    "ruleChapterList": "class.L@tag.a",
    "ruleChapterName": "text",
    "ruleChapterUrl": "class.read@href",
    "ruleContentUrl": "href ",
    "ruleCoverUrl": "class.hst@tag.img@src ",
    "ruleFindUrl": "",
    "ruleIntroduce": "id.content@tag.dd.3@tag.p.1@text",
    "ruleSearchAuthor": "class.odd.1@text",
    "ruleSearchCoverUrl": "",
    "ruleSearchKind": "",
    "ruleSearchLastChapter": "class.even.0@tag.a@text",
    "ruleSearchList": "class.grid@tag.tr!0",
    "ruleSearchName": "class.odd.0@tag.a@text",
    "ruleSearchNoteUrl": "class.odd.0@tag.a@href",
    "enable": true,
    "serialNumber": 1
  }

原文链接:第4课:书籍页规则,转发请注明来源!

转载请注明:一秒钟的梦 » [转]阅读APP书源制作第4课:书籍页规则

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址