-
Notifications
You must be signed in to change notification settings - Fork 618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[自动无缝翻页] 自定义翻页规则
示例说明
#176
Labels
技巧教程
脚本技巧 或 相关教程
Comments
原先搞得还是有点不方便,就干脆又加了个 当然,自定义翻页规则依然保留,提供给有动手能力的人~ |
您好!版主大大,我以前一直用这个 |
@Yunuuuu 不会添加分隔栏,你看我脚本名字就知道了:自动“无缝”翻页 |
多谢回复!明白了,谢谢您! |
Repository owner
deleted a comment from
BradKML
Aug 29, 2022
Repository owner
deleted a comment from
davisphper
Dec 22, 2022
Repository owner
deleted a comment from
davisphper
Dec 22, 2022
Repository owner
deleted a comment from
Viene0850
Dec 22, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
该 Issues 下只讨论
自定义翻页规则
,其他请求/反馈请新开 Issues,否则将会删除。自动无缝翻页 脚本从
v4.8.8
版本开始,支持了自定义翻页规则。不过当初仅为自用,压根没有考虑过这需求,我只能简单实现自定义翻页规则,因此只适用于简单的静态加载内容网站,当然这类网站占大多数,我写的上千规则中大部分都是这类网站,因此一般是够用了~
# 自写规则 前提条件
( 主要是末尾逗号、转义、双引号 )
( 推荐优先使用简单点的 CSS 选择器,对于复杂或需要选择文字的才建议使用 XPath )
可能需要会一点 JavaScript 语言 / 正则表达式( 针对一些较为复杂的网页,主要还是用于 URL 匹配,比如要匹配多个页面什么的 )
(现在可以直接使用
"url": "return fun.isPager()",
这个新的内置函数通过匹配元素来匹配规则,适用于大部分网站,算是降低了一些编写规则门槛)简单的来说,这就是提供给 懂一些技术 的用户自给自足制作规则用的~
大多数网站的规则一般都只需要这样(下方示例规则中,
url
、replaceE
、scrollD
均可按需省略):# 规则总览(只列出了目前 自定义翻页规则 能用的)
「 点击展开查看 」
## 内置函数
为了方便,规则中执行 JS 代码时可以使用脚本内置函数:
「 点击展开查看 」
## URL 匹配
"url": "xxx",
相比于其他同类脚本,我当初为了方便及避免正则折磨,将 域名 和 URL 分开匹配了,毕竟大量复杂的正则匹配会很费时间,分开后就先匹配域名,再去匹配 URL,间接也提高了效率(而且域名大都是文本,非常快 ~
匹配 URL 路径示例(正则表达式匹配范围仅是域名后面的 路径 及 ? 参数):
「 点击展开查看 」
## replaceE 规则省略后的自动判断方式说明
为了省力方便,6.4.25 版本后,脚本支持省略 replaceE 规则,该规则一般是用来将本页的页码元素替换为下一页的页码元素,以确保 nextL 选择的元素始终是下一页的 URL 地址。
但根据我写了那么多规则的经验来看,大部分情况下 replaceE 都是 nextL 的父元素,除此之外直接替换 nextL 元素也能用(无非就是页码数字不会变,看起来可能有点别扭),因此直接把 replaceE 设置为 nextL 的父元素就够用了,但为了避免误伤、不确定性,我还是做了一些条件判断,不满足条件的则只会单纯的替换 nextL 元素。
「 点击展开查看 」
假设 nextL 规则为
a.next
,而网页中页码元素示例如下:那么当
a.next
元素后面或前面 有 的相邻兄弟元素时,则 replaceE 为其父元素(即替换div.page
元素)而如果当
a.next
元素后面或前面 没有 的相邻兄弟元素时,则 replaceE 为其自身(即替换a.next
元素)当然,如果找不到 nextL 元素,或像这样
"replaceE": ""
为空,脚本就不会替换。# 规则示例
大家也可以参考我写的近千个翻页规则:https://github.com/XIU2/UserScript/blob/master/other/Autopage/rules.json
当只有一个规则时,是这样的(示例):
当有多个规则时,要这样连接到一起的(最后一个
}
不加逗号):因此在写入自定义翻页规则的时候,记得包裹着所有规则的
{ }
大括号,以及最容易犯错的逗号问题(最后一个 } 不能有逗号)。## 同一个网站 不同页面 适用不同翻页规则
「 点击展开查看 」
不同翻页规则的 host 是可以一样的,但是规则名不能一样,通过不同的 url 规则来进行匹配。
比如下面这个就是先从 URL 匹配
/a
如果没找到,那么再去匹配/b
,如果还没找到那么就直接应用 aaa_3 规则(因为这个没有 url 规则,所以就变成兜底的规则了)。## 继承标识 inherits 使用说明(v6.4.6 及之后版本)
「 点击展开查看 」
假设外置翻页规则中,有个
aaa
规则,你想要修改它的host
域名,在以前你需要将其完全复制出来,修改后放到自定义翻页规则中,这样脚本合并规则时,会将其完全覆盖外置规则(即使用你修改后的自定义规则)。但在脚本 v6.4.6 版本后,新加入了
inherits
继承标识,你可以省略不需要修改的那些规则,只写有变化的规则,例如下面这样,因为只需要修改host
规则,所以只需要这一个规则(当然还需要加上inherits
来提示脚本),其余的url
等规则都省略了。脚本发现同名后,会判断是否有
inherits
标识,如果有,就会这两个同名规则合并(也可以说是自定义规则继承了外置规则),最后得到的规则就是这样:不过该功能也是有局限性的,比如只能新增、修改一些规则,无法移除某条规则,因此考虑到这点,特地给
"function": {}
这种带括号内嵌的子规则搞了个例外,自定义规则中的"function": {}
会完整覆盖外置规则,而非合并,这样如果不需要 function 规则时可以在自定义规则中加个空的"function": {}
即可(括号内是空的)。以下这些详细解释的示例可能会失效,因此你也可以找个脚本支持的网站,然后去
自定义翻页规则
界面查看所有翻页规则来找到该网站相对应的翻页规则,来互相印证学习。## 翻页模式 1
这个模式是最常见的,即网站是纯静态加载内容的。
## 翻页模式 2
这个算是第二常见的,即网站自带了自动无缝翻页功能,只需要点一下网页中相应按钮即可。
## 翻页模式 3
模式 1 的变种,对于部分网页主体内容与网页底部之间距离不固定的网站,需要把基准从网页底部改为页码等指定元素处。
## 翻页模式 5
对于部分动态加载内容的网站,如果其支持 iframe 且可以通过 GET 直接打开下一页,那么就能用该模式。
插入 iframe 方式来加载下一页,无限套娃~
## 翻页模式 6
对于部分动态加载内容的网站,与上面不同的是,该模式适合简单的网页,没有复杂事件什么的。
插入 iframe 加载下一页,等其处理完后,获取下一页动态加载内容插入本页,只有一个娃~
该 Issues 下只讨论
自定义翻页规则
,其他请求/反馈请新开 Issues,否则将会删除。The text was updated successfully, but these errors were encountered: