Skip to content

规则实战其一:知乎日报

西红柿大芝麻 edited this page Jul 19, 2020 · 4 revisions

关于

知乎日报是知乎推出的一款拥有千万用户的资讯类客户端,每日提供来自知乎社区的精选问答,还有国内一流媒体的专栏特稿。

知乎日报有网页版和APP版,这里选择网站版,链接知乎日报,其规则最简单,列为实战篇其一。

需要准备的东西:网络(访问目标地址)、现代浏览器(edge、chrome、firefox)、亦搜(windows版为佳,可开启多个测试)。

基本规则

规则编辑界面有基本规则发现规则搜索规则章节规则正文规则五块可以伸缩的面板,我们按顺序来填。

作为实战其一,这里对规则做说明,介绍基本规则,后边实战不再赘述。

  • 类型选择图文视听一种,日报文字类,选择文字

  • 名称知乎日报知乎日报网页

  • 域名https://daily.zhihu.com,注意结尾不用/

  • 分组凭喜好,比如资讯图文知乎,等。相当于文章关键词。

  • 作者填自己大名或艺名,在下一尾虾

  • 签名档随意,只有编辑时可见,无实际用处,填入我是一尾自由的虾

  • 用户代理字符串按需填写。默认是macos chrome 的UA。

  • 加载js内容初学不必理会。它对整个规则生效,比如这里定义通用函数,方便其他规则编写。

  • 登录地址字面意思,填入链接,使用者点击右上角登录按钮即可模拟用户状态和同步使用信息。

  • 小饼干登录后自动生成,也可以手动编辑。所有的分享功能都不会携带个人cookies,但是备份会记录。

以上,是基本规则。

发现规则

  • 首先要打开启用,发现才会生效。同样,关闭后将隐藏该规则。

  • 地址,直接填入/,因为该站点只有一个内容,即根网页,/是一个相对路径,相对域名内容,因此要注意域名。

  • 列表,应填入.wrap(CSS)或//*[@class="wrap"](XPath),解释如下。这是第一个需要分析的规则。如果你还不理解,根据截图(包括下面发现其他规则也根据这张截图填写),STEP-BY-STEP按顺序来:

知乎日报发现列表.png

  1. 打开浏览器

  2. 键入https://daily.zhihu.com并回车访问。

  3. 按下F12打开开发者工具,切换至元素(Elements)栏。

  4. 找到一排并列的元素,这里是观察有<div class="wrap">并列,鼠标悬浮上方,可在网页看到对应元素有一个蒙版,确实是期待的结果。

  5. 使用CSS,类名前用.做标识符,即.wrap。使用XPath,使用键盘上的xpath_class模板//*[@class=""],应写成//*[@class="wrap"]

  6. 元素(Elements)栏键盘按下CTRL+F输入.wrap//*[@class="wrap"]做验证。

  • 完成列表规则后,可在名称写入text@js:result,右上角测试规则,验证是否没有问题。

  • 名称填入text,表示取文本内容,相似的还有htmlinnerHtmlouterHtml,其差别可以自行测试和体会。

  • 图片填入img@src。这是一个常用写法,含义为取img标签的src属性值,@是APP内部标识符,将img@src分割为2部分,前面是CSS规则,后面是属性名。

  • 结果填入a@href。也是一个常用写法,含义为取a标签的href属性值。

以上,是发现规则,未列出的跳过。全都根据上面给出的截图来写。

章节规则

该实战中目录页同正文页,写法更简单,也可作为一种定式。

  • 章节列表body,这是一个CSS规则,表示取body节点,html中body只有一个,我们需要的部分一般都在body。

  • 章节名称h2@text,表示取h2标签文字作为显示结果。

  • 结果填入@js:lastResult@js:baseUrl,表示取当前页地址,作为正文页。

以上,是章节规则,未列出的跳过。

正文规则

内容写入.question@html,含义是取classquestion的元素的html内容,html是APP内部一个处理图文混排的方法,懒的分析元素都可以使用该写法。

测试

测试界面右上角是发现测试,点击按钮自动测试规则,如图。

知乎日报测试.png

结果

最终结果如下知乎日报.json

{
    "id": "113781d0-8b65-44df-bdb6-7a437e29cf72",
    "createTime": 1595034756401971,
    "modifiedTime": 1595035414884371,
    "author": "一尾虾",
    "postScript": "我是一尾自由的虾",
    "name": "知乎日报",
    "host": "https://daily.zhihu.com",
    "group": "资讯 图文 知乎",
    "contentType": 1,
    "sort": 0,
    "useCryptoJS": false,
    "loadJs": "",
    "userAgent": "",
    "enableDiscover": true,
    "discoverUrl": "/",
    "discoverItems": "",
    "discoverList": ".wrap",
    "discoverTags": "",
    "discoverName": "text",
    "discoverCover": "img@src",
    "discoverAuthor": "",
    "discoverChapter": "",
    "discoverDescription": "",
    "discoverResult": "a@href",
    "enableSearch": false,
    "searchUrl": "",
    "searchItems": "",
    "searchList": "",
    "searchTags": "",
    "searchName": "",
    "searchCover": "",
    "searchAuthor": "",
    "searchChapter": "",
    "searchDescription": "",
    "searchResult": "",
    "enableMultiRoads": false,
    "chapterRoads": "",
    "chapterRoadName": "",
    "chapterUrl": "",
    "chapterItems": "",
    "chapterList": "body",
    "chapterName": "h2@text",
    "chapterCover": "",
    "chapterLock": "",
    "chapterTime": "",
    "chapterResult": "@js:lastResult",
    "contentUrl": "",
    "contentItems": ".question@html",
    "loginUrl": "",
    "cookies": "",
    "viewStyle": 0
}