当前位置: 首页 > article >正文

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

内置变量

爬取结果

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

字段名称字段类型
htmlString页面HTML
jsonJSONObject/JSONArray内容转json结果
bytesbyte[]二进制结果
cookiesMap<String,String>cookies
headersMap<String,String>headers
statusCodeintHTTP状态码
urlString当前页面的URL
titleString当前页面的标题
streamInputStream二进制流(可用于下载)

异常信息

当节点发生异常时,会产生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调用。

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

  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,传入参数即可看到返回值。


http://www.kler.cn/a/461847.html

相关文章:

  • 关于IDE的相关知识之三【插件安装、配置及推荐的意义】
  • 蓝耘平台使用InstantMesh‌生成高质量的三维网格模型!3D内容创作!小白入门必看!!!
  • Tailwind CSS 实战:表单设计与验证实现
  • 【Python】selenium结合js模拟鼠标点击、拦截弹窗、鼠标悬停方法汇总(使用 execute_script 执行点击的方法)
  • (六)vForm 动态表单(数据量大,下拉选卡顿问题)
  • C语言面的向对象编程(OOP)
  • AAL省电效果对比
  • trie树算法--c语言
  • 解决Spring boot集成quartz时service注入失败为null的问题
  • 【目标跟踪】checkpoint文件到底是什么?
  • 网页单机版五子棋小游戏项目练习-初学前端可用于练习~
  • 基于W2605C语音识别合成芯片的智能语音交互闹钟方案-AI对话享受智能生活
  • MySQL DBA需要掌握的 7 个问题
  • 使用 Vue CLI 创建 Vue.js 项目的详细指南
  • 【DevOps】Jenkins部署
  • Java jni调用nnom rnn-denoise 降噪
  • WebRTC的线程事件处理
  • 五、其他核心概念
  • 基于SpringBoot在线竞拍平台系统功能实现三
  • 免费的量化交易股票API有哪些局限性?
  • 人工智能-Python上下文管理器-with
  • Windows系统下Rancher安装全攻略:开启容器管理新征程
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库
  • MATLAB条件判断(if_else_end型)
  • WPS计算机二级•表格初认识
  • 【UE5 C++课程系列笔记】18——蓝图变量自动加载“DefaultEngine.ini”文件变量作为默认值