技术源于生活,服务生活 Terry 随笔

爱阅书香之书源制作与导入教程


在阅读本文之前

要使用爱阅书香的网络功能,需要有相应的书源配置。我们不再提供默认的书源配置。请自行根据书源规则来配置自己的源!

当前收集的书源配置

有很多热心的小伙伴,提供了各式各样的书源配置。我将其整理了下。

点击导入无反应的,请使用苹果手机自带的浏览器safari打开。

书源作者 地址 操作
相逢应不识 https://gitee.com/ift123/iFreeTimeBookConfigs 点击导入
wxdjs https://gitee.com/wxdjs_sz/iFreeTimebookConfigs 点击导入
abc君 https://gitee.com/weiniff/ibooks 点击导入
wangyingbo https://gitee.com/wangyingbo/iFreeTimeBookConfigs 点击导入
BlackTouma https://gitee.com/BlackTouma/iFreeTimeBookConfigs 点击导入
纲吉 https://gitee.com/gangxiaoji/bookConfigs 点击导入
feifeiadmim https://gitee.com/feifeiadmim/book_yuan 点击导入
mm0809 https://github.com/mm0809/BUUK 点击导入
曙光 https://gitee.com/shu_guang_a/love_reading_books 点击导入
zxhzxhz https://zxhzxhz.tk/booksource/ 点击导入
Mxy https://gitee.com/mxyseo/iosread 点击导入
灰太狼 https://gitee.com/Good_Grey_Wolf/love_reading 点击导入

若你有自己的书源,并愿意共享给别人使用,请将地址发给我。谢谢。 我将在博客及微信公众号(iosRead)上进行发布。

导入书源的方式

有非常多的方式导入书源,以下列举几种:

一鍵导入方式(6.2.0版本之后提供的新功能)

  1. 在书架的右上角菜单,选择书源配置
  2. 打开右上角的同步,输入书源合集地址(如https://gitee.com/ift123/iFreeTimeBookConfigs),可输入多个地址。
  3. 点击获取书源配置,等处理完后将弹出一个导入界面。
  4. 点击右上角的一键导入就可以了。

ps:
此方式能保存书源地址,后续需要更新时,只需要点击获取书源配置就可以了,推荐使用。

更多导入方式

点击打开地址书源导入与管理

书源并非越多越好,满足你的需求就够了。 除了自定义书源之后,你还可以使用自定义来源

书源与来源的区别

先说明下所谓的自定义来源自定义书源的区别,前者只是针对一个url。后者针对的是整个应用的配置。

  • 来源:自动把你提供的url解析成一组章节信息,再从解析出来的章节信息中解析出对应的内容。基本无须你做什么工作。
  • 书源:需要指定各种配置的请求信息与响应信息。可配置整个软件的所有数据接口。

自定义书源说明

从最根本上讲,就如你使用浏览器一样!

你配置了书源,爱阅书香就根据配置显示内容。这样,你想看什么内容,想对内容进行怎么样的过滤,都没问题。毕竟,你的手机,你做主嘛。

为帮助你达到这个目的,我们提供以下几个配置。实现一个配置,你能得到3星服务;实现2个配置,你能得到5星服务;实现7个配置!你可以召唤神龙,并能向其许一个愿望了(【开心的笑】如果神龙愿意见你的话)。

七大龙珠在此

  1. 书籍搜索:搜索出相关内容的一个配置。
  2. 列表详情:这是一个根据给定的地址,主要为了解析出书籍的章节标题章节地址。默认处理方式为动态解析
  3. 章节详情:解析出指定章节的内容。默认处理方式为动态解析
  4. 书海配置:根据给定的规则,最终生成一组书籍信息。类似榜单,分类,书单都可以在这里完成
  5. 书籍详情:解析出书籍的详细信息,包含简介,封面,字数等,具体可参考配置界面的添加
  6. 多来源搜索:解析出多个来源,一般不需要用到。只有聚合类网站才会需要到。
  7. 关键词联想:当你在搜索界面,输入时进行的联想的配置,解析出一系列的联想词。

这七大龙珠,哦,不对,是这7个配置,并不需要都实现。最简单的就是只实现书籍搜索或者是书海配置就可以了。

所谓的配置,就是你指定一个地址(如你在浏览器中保存书签一样),再指点下这呆呆的小配置:访问URL前要做些什么,从网页得到内容之后,怎么把想要的ABC提取出来。这,就是传说中的爬虫技术!掌握此技能,就如掌握数理化,你将能横扫网络,纵横书海。从此,天下之广,也不过在于你弹指之间。

当然,这不容易达成。所以,我更为你准备了几大利剑,足于让你杀个七进七退。主要围绕两个中心:如何取得内容与如何解析内容

  • 取得内容:输入一个URL或者是动态生成一个URL。
  • 解析内容:提供了很多方式
    • 使用xPathEx。具体可以访问xPathEx解析教程。简单方便,使用a.b.c的方式得到内容。其前缀为@ex:。5星推荐哦。(此方式需要6.2.1版本才支持,正在内测中哦)
    • 使用xpath,这需要有一定基础,具体语法我就不提供了,可以百度下,很多教程的。其前缀为@xpath:
    • 使用json,这个需要内容是JSON才可以使用哦,一般访问的网站返回的都是HTML,只能使用xPath或xPathEx来处理。具体可以访问JSON解析教程。其前缀为@json:
    • 使用正则表达式这里有教程。其前缀为@regex:
    • 直接使用 @def: 来定义一个字符串。
    • 使用字符串,将内容当成是字符串进行处理,这里有教程。其前缀为@str:

在写规则时,老是要写前缀是一件很麻烦的事。为减少麻烦,你可以根据书源返回结果的格式,设置书源中的高级配置,选择响应数据处理方式来指定固定的前缀。

常规的网站返回的是HTML,在响应数据处理方式中选择HTML/xPathEx。这样在解析时,若是使用xPathEx的规则来解析数据,则不需要再写@ex了。若是想使用其它的方式解析,则需要写前缀了。

这几种解析规则可以混合着用,比如使用默认的解析方式text(),然后再添加一个解析规则@regex:(?<=《).+?(?=》)。非默认的解析规则必须添加前缀。

书源配置界面上的说明

对App上的书源配置界面进行简单的说明。

  • 名称:这是书源的名称。
  • 首页:这是网站的主页,必须设置,当解析出来的地址是相对地址时,将自动使用首页提供的地址来转成绝对地址。
  • 高级配置
    • 权重:这个影响书源的排序。如你没有指定搜索配置的权重,则以此处的权重为主,多个书源将根据这个权重进行排序,然后按序进行搜索,其它配置与此类同。注意:高级配置中的权重是总权重,各个配置也可以有自己的权重,以各个配置(如搜索配置)的权重为主,当配置没有设定权重时,则使用总权重。
    • 通用日期格式: 一般不需要设置。会自动识别的。支持:yyyy-MM-dd HH:mm:ss
    • 配置说明:你想留下的说明信息。
    • 配置密码:只有当你启用iCloud时才有效。设置密码后,只有本人才能看到具体的配置,对其他人来说,此配置只能使用。只能看到配置说明的内容。
    • 书海分组名:相同名称的不同书源,将显示在一起。比如你可以把所有书源的此属于设置为“合并的书海”。则在书海无涯的界面上,就只有一个列表。
    • 优先编码方式:编码方式的优先级别。
    • 响应数据处理方式:对取得数据进行解析时,可以减少写前缀的麻烦。自动表示根据返回的内容格式,判断出相应的解析方式,HTML的话默认使用xPath。6.2.1版本已经将默认方式修改为 HTML/xPathEx
    • 失败时使用动态解析:当无法解析出内容时,是否使用动态解析。这是你可以不写列表详情章节详情配置的根本所在。
    • Cookies:一般启用
    • 创建HTTP对象:留空就可以了,也可以使用Http.CreateInstance来创建默认Http对象。
    • 请求时参数值处理:这个与HTTP的请求有关,若参数有中文,
      • 网站要求用GBK编码时,可以使用JxdSecuritySub.Gb2312Encoded:value来格式化。
      • 要求使用Base64时,可使用 JxdSecuritySub.Base64EncodeByString:value
      • 默认使用UTF进行格式化
    • 自定义HTTP头:可以在这里修改Http请求头的相关字段,比如user-agent.或者是网站要求的自定义信息

下面介绍下各个配置的功能与作用

搜索配置

当你在搜索配置上输入一个关键词后,就是调用此配置进行处理的。

为了取得搜索结果,需要在配置上输入

  • 请求方式:选择GET或者POST
  • 地址参数:可分开写,也写在一起。一般关键词的值可以用%@来替代,可以用@calc(pageIndex + 1)来得到下一页的序号。如 http://icc.one/search.php?key=%@&page=%@calc(pageIndex + 1).pageIndex是从0开始的。

更多请求配置:

  • 最大请求页数:一定要指定,表示一次搜索最多的搜索页数。
  • HTTP引用:有些网站一定要指定引用地址才可以访问,因网站而异。
  • 下一页请求方式:GETPOST
  • 下一页地址:可以通过写固定的地址,也可以从上一页中解析出下一页的地址。
  • 下一页参数:这两都与之前的差不多

响应配置 有了地址后,就可以解析出内容了,这个配置要出一组书籍信息,具体字段按界面上给出的填写就可以。

  • 分割为多个书籍信息:一般为多个结果,用这个字段的解析规则,将内容分割为多个。
  • 书名:指示出如何解析出书籍的名称
  • 来源解析器:最关键是指示出如何解析出章节目录地址。你也可以解析出其它的内容,如你使用辅助信息解析出一个ID,之后在别的配置中,可以使用 source.helpId 的方式来取出此信息后格式出相应的URL。
    • 当无法解析出目录地址时,可以解析出书籍详情地址,然后在书籍配置中将书名作者目录地址解析出来。

更多响应配置

  • 优先编码方式:一般不需要设置,能自动猜测出来,当结果为乱码时,可以修改后重新去请求数据试试。
  • 响应数据处理方式:与高级配置中的说明一致,若设置,则以此配置为主。

请求测试

在你完成如何获取内容的配置后,就可以点击测试请求进行请求数据,若配置无误,此时可查看以下内容

  1. 查看原始内容:这是服务器返回的原始数据
  2. 查看分析结果:这是根据你写的规则,解析出来的数据。
  3. 查看HTTP协议:这是根据你的请求配置生成的HTTP请求,可以看你生成的URL,参数是否正确

另外,若你成功配置了如何访问下一页的规则,则界面的最下面还有当前第X页,点击访问下一页的功能,这个也是在搜索时可翻页的关键,此时请记得设置最大请求页数

测试响应

请求到数据后,可以打开测试响应界面。这样当你修改一个解析规则时,点击同步后,可在响应界面实时刷新下,看下解析出的内容正确与否。

搜索配置的例子

6.2.1版本,使用最新的解析方式(xPathEx)

  1. 创建书源,输入名称笔趣宝与主页https://www.biqubao.com
  2. 点击书籍搜索,输入地址https://www.biqubao.com/search.php?keyword=%@
  3. 响应配置分割为多个书籍信息中输入:div[@class=result-item result-game-item]
  4. 书名中输入:h3.span
  5. 作者中输入:div[@class=result-game-item-info].span[1]
  6. 点击来源解析器,添加字段章节目录地址,输入:a[0].@href
  7. 点击请求测试界面,看看生成的数据吧。在网站没有改版的情况下,现在这个书源已经可以用了。去禁用掉其它书源,只启用此书源配置,然后去搜索书源看看吧。

ps: 进阶尝试,可自行添加封面简介的解析。这里我就不提供了。

6.2以之前版本的步骤

  1. 创建书源,输入名称测试书源与主页https://www.22ff.org/
  2. 点击书籍搜索,输入地址https://www.22ff.org/s_%@
  3. 点击请求测试
  4. 响应配置分割为多个书籍信息中输入://ul
  5. 书名中输入:.//li[@class=”neirong1”]/a[1]/text()
  6. 作者中输入:.//li[@class=”neirong4”]/a[1]/text()
  7. 点击来源解析器,添加字段章节目录地址,输入:.//li[@class=”neirong1”]/a[1]/@href
  8. 重新进入请求测试界面,点击重新请求
  9. 点击查看分析结果,对比下数据是否正确,若正确,则已经完成

这个简单的书源就算是配置成功了。你可以禁用其它的所有书源,只启用此配置,再使用爱阅的搜索界面去搜索书籍。看下是否正确

注意: 要成功生成一个书籍详情,必须存在书名作者章节目录地址

当你能成功写一个搜索配置时,其它配置对你来说,其实已经很简单了。加油,少年!

列表详情

此配置是在更新书籍章节列表时经常被使用。目的是把每一个章节的标题与对应的地址解析出来。

此配置的默认地址信息就是你搜索配置中得到的章节目录地址

它必需是一个可访问地址。

若不写此配置,则采用智能分析技术,动态解析出最基本的数据。

此配置的规则与搜索类同,不再复述。

章节详情

此配置在获取具体的章节内容时使用,目的是找内容获取出来。

此配置的默认地址信息就是列表详情中解析出来的章节地址

它必需是一个可访问的址

若不写此配置,则采用算法,动态分析出正文内容。(算法不一定100%正确的哦,要看具体的数据)

书海无涯

这个也许比较中二的名字,是突发奇想的。这个功能主要是想把所有你喜欢的数据汇合在一起,通过一系列的处理,生成一组书籍的信息。方便你慢慢的查阅,而不是通过搜索的方式而来。

这块的配置比其它的要复杂那么一点点。以下分别进行说明

配置应用类型

支持类型:

  • 书海无涯:这个就是主界面菜单上的书海无涯,显示在界面的
  • 热词:主要是获取一组热门的书籍名称,应用在搜索界面上的热词
  • 应用所有:同时支持以上两者

分类地址配置

支持:

  • 动态地址:给定一个地址,从这个地址的响应内容解析出生成一组地址信息。
  • 固定地址:直接添加一组地址就可以。

请求配置

从分类地址配置中,分成了一组地址信息,请求配置,可对这些地址做些处理之后,得到的地址再去请求数据。

响应配置

这块的规则与书籍搜索配置基本一样,一般可以从书籍搜索配置中复制到此,再进行必须的修改就可以了。

书籍详情配置

此配置是为了获取更详细的书籍信息,具体字段信息,请参考界面。

多来源搜索配置

此配置适用于聚合型的站点,就是此网站上的书籍都有多个来源时,可使用此进行配置。

关键词联想配置

在你搜索界面上输入关键词,进行联想的接口。比如你输入“中”,要联想出“中国”或是“中州”,则是由此配置生成。

附录

  1. xPath的基本语法
  2. 正则表达式简单语法

相关内容

Content