SpiderFlow平台v0.5.0内置变量及自定义函数

内置变量

爬取结果

当爬取节点执行后产生类型为HttpResponseresp变量

|------------|----------------------|-------------|
| 字段名称 | 字段类型 | |
| html | String | 页面HTML |
| json | JSONObject/JSONArray | 内容转json结果 |
| bytes | byte[] | 二进制结果 |
| cookies | Map<String,String> | cookies |
| headers | Map<String,String> | headers |
| statusCode | int | HTTP状态码 |
| url | String | 当前页面的URL |
| title | String | 当前页面的标题 |
| stream | InputStream | 二进制流(可用于下载) |

异常信息

当节点发生异常时,会产生ex变量,需要注意的是,ex变量不会向下传递

sql执行结果

执行sql后产生此变量rs

  • 当是select语句时,类型为List<Map<String,Object>>
  • 当是selectInt语句时,变量类型为int
  • 当是selectOne语句时,变量类型为Map<String,Object>
  • 当是insert/update/delete语句时,变量类型为int
  • 当是insertofpk语句时,返回的是主键,变量类型为int

自定义函数

自定义函数介绍

在开发爬虫的过程中,发现无法使用现有函数完成想要的功能,也不想在java中开发,此时就可以考虑使用自定义函数,自定义函数的语法是JS(Java Nashorn引擎)

定义自定义函数

使用自定义函数

  • 在表达式中使用,${add(1,2)}

自定义函数的使用

示例: 使用自定义函数实现风力等级转换

这里还是使用实例来说明,假设我们有这样一个需求,根据我们抓取到的风速数据(单位m/s)转换成风力等级,每个等级对应一个区间,使用自定义函数实现结果的输出。

先看下自定义函数界面结构,如下图:

函数名称、参数、函数体。这里的函数体使用js语法,支持function调用。

实现上述需求的函数体示例如下:

java 复制代码
  if(!wind_speed){
    return '--'
  }
  //如果带有单位,先替换再处理, 也可以使用其他方式取出数值
  if(wind_speed.indexOf('m/s')!==-1){
     wind_speed = wind_speed.replace('m/s', '')
     wind_speed = parseFloat(wind_speed)
  }
  if (wind_speed < 1.5) {
     return 1
  }
  if (wind_speed < 3.3) {
     return 2
  }
  if (wind_speed < 5.4) {
     return 3
  }
  if (wind_speed < 7.9) {
     return 4
  }
  if (wind_speed < 10.7) {
     return 5
  }
  //  ... 省略其他判断和返回逻辑
  return 'unknow level'

以上函数,假设名称为convert_wind_level, 入参为风速wind_speed,可以为数字或者带有m/s的字符串。

验证

新建爬虫,使用convert_wind_level,传入参数即可看到返回值。

相关推荐
东东51617 分钟前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino20 分钟前
图片、文件的预览
前端·javascript
layman05282 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔2 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李2 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN2 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒2 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库2 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052473 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫
晓晓莺歌3 小时前
vue3某一个路由切换,导致所有路由页面均变成空白页
前端·vue.js