最新消息:

[转]阅读APP书源制作第3课:搜索列表规则

学习 林夕 100浏览 0评论

之前讲过了书源参数和搜索地址的确定,这次我们来讲下面的步骤:搜索页规则书写

0×1. 演示案例


0×2. 搜索列表样式

我们先随便搜索一个关键词,我搜索的是“太古”,我们得到以下的结果:

然后,按“F12”,浏览器右边会出现一个窗口,可以看到左边网页的代码结构,如下图:

下面,我们展开右侧的代码,找到左边搜索结果里面任意一个结果的代码,在浏览器右侧鼠标移动的到对应的代码,左边对应的显示部分会有阴影标识,如下图:

我们可以看到,搜索页的每个结果都是由下面的这段代码里面的“< tr >< /tr >”显示的,其实就是一个简单的表格,tr 标签是整个表格里面的一行:

<table class="grid" width="100%" align="center">
<caption><b style="color:red;">太古</b>搜索结果</caption>
 <tr align="center"></tr>
 <tr></tr>
 <tr></tr> 

这样我们就可以写书源里面的“ruleSearchList”了,但是我们发现“< tr >< /tr >”里面的 tr 标签是没有 class 或者 id 的,所以我们要用上一级的标签里面的 class 或者 id 进行定位。

它的上级标签就是“< table class=”grid” width=”100%” align=”center” >这个,这是表格样式的起始标签,里面有 class,所以我们可以这么写:

"ruleSearchList": "class.grid@tag.tr" //这里的意思就是定位 class="grid"这个元素,然后获取 tr 标签里面的内容

但是我们会发现 < tr align=”center” >< /tr >这个代码其实是表格的表头,不是搜到书的具体信息,我们可以在定位获取数据的时候,把这个去掉,可以这么写:

"ruleSearchList": "class.grid@tag.tr!0" // ! 这个感叹号在规则里面是排除的意思,0 之前说过,定位的时候,意思是第一个,整个意思就是获取 tr 标签里面信息的时候,自动排除第一个 tr 标签,也就是把< tr align="center"></tr >这个去除了。

上面我们已经找到了,搜索结果就是获取< tr >< /tr >里面的信息,一个< tr >< /tr >就代表一个搜索结果,我们要获得阅读里面搜索结果显示书的名称,作者,最新章节,封面,就要获取< tr >< /tr >这个里面的内容。

我们展开一个< tr >< /tr >标签,可以看到里面内容如下:

 <tr>
    <td class="odd"><a href="https://www.x23us.com/book/69239"><b style="color:red">太古</b>龙象诀</a></td>
    <td class="even"><a href="https://www.x23us.com/html/69/69239/" target="_blank"> 第 109 章 联手</a></td>
    <td class="odd">旺仔老馒头</td>
    <td class="even">21130K</td>
    <td class="odd" align="center">18-05-06</td>
    <td class="even" align="center">连载</td>
  </tr>

0×3. 搜索页书籍作者

搜索页书籍作者: “ruleSearchAuthor”,上面的作者是”旺仔老馒头”,我们发现作者这个标签里面是有 class 的,就是< td class=”odd” >,我们可以这么写:

class.odd@text

其实上面这种写法是错误的,因为在同级里面,还有一个 class=”odd”,作者标签里面的 class=”odd”按顺序数的话,应该是第二个,我们第 1 课又说过了,我们定位的时候,第一个是 0.第二个是 1,所以正确的写法是:

class.odd.1@text// 意思就是获取第二个 odd 这个 class 元素里面的文本内容

0×4. 搜索页书籍封面

搜索页书籍封面: “ruleSearchCoverUrl”,这里没有,所以我们空着不写就可以了


0×5. 搜索页书籍分类

搜索页书籍分类: “ruleSearchKind”,例如“玄幻”什么的,这个网站搜索结果里面没有,所以我们也空着


0×6. 搜索页最新章节

搜索页最新章节: “ruleSearchLastChapter”,这里是有的,就是 class=”even”这个,这里有两个同样的 class 元素,我们按照之前的定位规则,可以这么写:

class.even.0@tag.a@text// 意思就是获取第 1 个 even 这个 class 元素里面的 a 标签里面的文本内容

0×7. 搜索页书籍名称

搜索页书籍名称: “ruleSearchName”,就是搜索结果里面的书名,第一个 class=”odd”就是书的名称元素,我们可以这么写:

class.odd.0@tag.a@text// 意思就是获取第 1 个 odd 这个 class 元素里面的 a 标签里面的文本内容

0×8. 搜索页书籍链接

搜索页书籍链接: “ruleSearchNoteUrl” ,一般跳转都是点击书名进行的,我们观察下,发现这里就是这样的,所以我们要获取书名对应的连接,也就是要获取在第一个 class=”odd”里面的 href 地址,我们这么写:

class.odd.0@tag.a@href// 意思就是获取第 1 个 odd 这个 class 元素里面的 a 标签里面的超级链接地址

0×9. 整理

我们根据第二课讲的,把搜索地址什么的补齐,如下:

{
    "bookSourceName": "顶点小说",
    "bookSourceUrl": "https://www.x23us.com/",
    "ruleSearchUrl": "https://www.x23us.com/modules/article/search.php?searchtype=keywords&searchkey=searchKey",
    "httpUserAgent": "",            \             
    "ruleBookAuthor": "",            \         
    "ruleBookContent": "",            \        
    "ruleBookName": "",                \      
    "ruleChapterList": "",              \  
    "ruleChapterUrl": "",               /   这里是书籍页的相关规则,我们下节再讲
    "ruleContentUrl": "",              /
    "ruleCoverUrl": "",               /
    "ruleFindUrl": "",               /
    "ruleIntroduce": "",            /
    "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
  }

原文链接:第3课:搜索列表规则,转发请注明来源!

转载请注明:一秒钟的梦 » [转]阅读APP书源制作第3课:搜索列表规则

发表我的评论
取消评论

表情

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

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