SpiderFlow平台v0.5.0表达式语法

基本用法

本项目中表达式引擎也支持模板的方式,例如动态拼接url

https://www.xxx.com/${path}/q?=keyword=${keyword}

运算符

模板语言支持大多数Java运算符。这些运算符的优先级也与Java中的相同。

类型

byte ${123b}
short ${123s}
int ${123}
long ${123l}
float ${123f}
double ${123d}
string ${'hello'}
string ${"hello"}

同时也支持定义Map和List

${{key : "value"}}
${[1,2,3,4,5]}
${{$key : "value"}}//$key表示动态从变量中获取key值

一元运算符

您可以通过一元运算-符将数字取反,例如

${-234}

要取反布尔表达式,可以使用!运算符,例如

${!true}

算术运算符

支持常见的算术运算符,例如

${1 + 2 * 3 / 4 % 2}

比较运算符

${23 < 34},${23 <= 34},${23 > 34},${23 >= 34},${ true != false },${23 == 34}

较运算符结果为boolean类型

逻辑运算符

除了一元运算!符,您还可以使用&&||。就像Java中一样,运算符也是一种短路运算符。如果&&左边计算为false,则不会计算右边。如果||左侧为true,则不会计算右边

三元运算符

三元运算符是if语句的简写形式,其工作方式类似于Java中,例如

${true ? "yes" : "no"}

变量

${var}

通过${变量名}调用

调用方法

${extract.xpath(resp.html,'//div[@id=abc]').regx('/\\d/').toInt()}

通过${变量.方法名(参数1,参数2,….)}进行调用

数组和Map

${myArray[2]} ${myArray[indexVar]} ${myMap.get("key")} ${myMap["key"]} ${myMap.get(keyVar)} ${myMap[keyVar]}

链式调用

与Java中一样,您可以无限嵌套成员,数组元素和映射访问

${myObject.aField[12]["key"].someMethod(1, 2).anotherMethod()}
${extract.xpath(resp.html,'//div[@id=abc]').regx('/\\d/').toInt()}

 正则表达式

对正则表达式和xpath语法的支持主要是基于ExtractFunctionExecutor这个类,使用extract前缀。

spiderflow中支持的表达式用法
功能示例说明
根据jsonpath提取内容KaTeX parse error: Expected '}', got 'EOF' at end of input: …ath(resp.json,'.code’)}输入json, 返回json中的code字段值
根据正则表达式提取内容${extract.regx(resp.html,‘(\d).?(\d).?(\d)’)}取出title标签中间的内容,默认取第1个
${extract.regx(resp.html,‘(\d).?(\d).?(\d)’,2)}取出title标签中间的内容,取指定位置的数据, 返回字符串
${extract.regx(resp.html,‘(\d).?(\d).?(\d)’,[1,2])}取出title标签中间的内容,取指定位置的数据,返回数组
${extract.regxs(resp.html,‘(\d).?(\d).?(\d)’)}取出title标签中间的内容,取指定位置的数据,返回数组,默认取第1个
${extract.regxs(resp.html,‘(\d).?(\d).?(\d)’, [1, 2])}取出title标签中间的内容,取指定位置的数据,返回数组实战

正则实战

示例1: 使用正则取出"a5b8c9"中的数字
假设变量名为source:

取出数字8的表达式写法:

${extract.regx(source,‘(\d).?(\d).?(\d)’,2)}

取出8和9的表达式写法:

${extract.regx(source,‘(\d).?(\d).?(\d)’,[2, 3])}

取出所有数字的表达式写法:

 ${extract.regxs(source,‘(\d)’)}

验证输出:

示例2: 取出"学号: 202411013021"中的数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的雷神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值