此书源指的是ios平台的用心读书的书源,原名为极简阅读。
1.搜索
1.1搜索请求url以及参数
- get请求: 参数可直接放到请求url中, 例:
/search/${keyword}
, 也可放的请求参数中, 例:/search?keyword=xxxx
可这样写{"keyword": "{keyword}"}
, 软件会将你的搜索内容替换到{keyword}
- post请求: 同上,body在请求参数中写
解析方式
略
1.2请求以及响应编码方式
- 请求:当用chrome查看请求的参数中文部首无法解码时,即为gbk编码,
- 响应:响应内容是数字数组,则响应编码需要使用gbk
1.3请求信息
使用js在请求前对请求的config进行处理,例如修改请求url header cookies等。
具体在修改的参数需要看文档
1.4响应信息
使用js处理响应的html,必须返回一个html字符串
1.5列表规则
- xpath: 例: 列表为
//ul/li
书名在li下的a中,可/a
这样写
url在li下的a中为herf中,可/a/@href
这样写。 - xpath+js: xpath后面可跟
<js></js>
以使用js来处理xpath获取到的文本(在js中value变量即为该文本字符串)
例:/a
获取到的是【都市】书名
,/a<js>return value.match(/【(.*?)】/)[1];</js>
这样可去除前面的【都市】
1.6 前置请求
1.6.1适用情景:
- 一些网站页面打开会有几秒的人机验证,5秒盾,验证码等时,可以用前置请求的浏览器过盾和图片验证码。
- 当请求某页面时,有些网页需要在请求头、url中含某些参数需要通过其他请求来获取时,可使用前置请求的常规请求。
1.6.2对于常规请求的PUT存储:
可以通过前置请求到的内容进行解析后,传递给正式请求
格式:
{
"变量名": "xpath/jsonpath"
}
传递的变量在正式请求中可使用 @get{变量名}
的方式来获取。
2. 详情
若网页中直接点击搜索的书籍后没有详情,并跳转到了目录时,可不写详情规则
- 在详情中一般html的head部分会有
meta
标签可方便的获取书籍的详细信息 - 若配置了详情规则,必须要配置章节列表url
个人经验
- 有些网页的会有多个章节目录的按钮,可使用
//xxx[text()="章节目录"]/@href[1]
等方法来获取, - 也有些目录页面的url规则比较简单,比如是书的url+ /catetory/,可
<js>return config.url + "/catalog/"</js>
这样写来得到章节页面url
3. 章节
3.1 章节列表规则
同搜索列表(1.5)
3.2 章节分页
- 方式一:在章节是否下一页处填写下一页的解析规则,软件会自动请求获取到的下一页url,直至解析为空。
- 方式二:参见 文档2.7
Tip
当章节多页使用方式二时,需要在请求信息中修改bookUrl而不是示例中的chapterUrl
个人经验
- 在一些网页中,会有“隐藏章节”的情况,即网页列表中,每间隔几章的网页url为空,且毫无规律,但是能通过访问上一章来获取下一章即没法直接获取url的章节的url。来源为极简群里的 哈哈 佬。
脚本思路是:- 在章节响应信息中,通过正则获取所有的列表url, 当遍历到某个url为空时,将上一章的url放到这一章,并做一个标记。
- 在正文请求中加一个前置请求,前置请求来请求章节,并在put中加入下一章的url, 在正式请求时,可通过请求信息使用js判断url中是否有标记(因为有标记的即为没有url的,我们要用前置请求获取到的url),若有标记,就使用前置put的url来作为这次请求的url。
具体流程可看极简源仓库中的带有"隐藏章节"的源。
4. 正文
有空再写
转载请注明出处