spider-flow/document.md
2019-07-24 15:05:38 +08:00

4.2 KiB
Raw Blame History

spider-flow使用说明

启动

演示站点

点击跳转

服务器配置较低,如有卡顿请谅解

图形说明

图形 图形说明
正方形 抓取页面
平行四边形 定义变量
双边矩形 输出(主要用于测试输出至页面表格)
圆柱 定义数据源
双正方形 执行SQL
箭头 流转方向

抓取页面

  • 循环变量用来定义循环变量主要目的是抓取多个同类URL,如projectIndex
  • 循环次数:定义循环次数,可使用${}从变量中获取值FreeMarker语法10
  • 起始URL抓取地址可使用${}从变量中获取值FreeMarker语法https://gitee.com/${projectUrls[projectIndex]}
  • 请求方法GET、POST
  • 请求参数:用来设置请求参数,可添加多个,参数值处可使用${}来获取值
  • 请求header用来设置请求header可添加多个header值处可使用${}来获取值
  • 代理host:port

定义变量

  • 变量名:定义变量名称
  • 变量值:可使用${}从变量中获取值FreeMarker语法${selectors(resp.html,'.categorical-project-card a','attr','href')}

定义数据源

  • 数据库类型目前仅支持Mysql(其它驱动未引入至项目中)
  • 数据库连接jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
  • 用户名root
  • 密码,如123456

需要注意的是,此处不支持${}语法

输出

  • 输出项,该值为页面中显示表格的列名
  • 输出值,该值为页面中显示表格单元格值,语法同样支持${}

执行SQL

  • 数据源,选择之前定义好的数据源
  • 语句类型select/insert/update/delete
  • SQL语句INSERT INTO gitee_gvp(project_name, project_link,project_desc) VALUES (#${projectNames[projectIndex]}#,#${projectUrls[projectIndex]}#,#${projectDesc}#)

需要注意的是SQL语句不支持${}语法,但是参数是支持的,另外参数需要用##包起来

箭头

  • 条件,每个箭头都可以添加条件,当条件成立时,才流向所指向的节点,不写即不判断,直接流向下一个节点

内置变量

变量名称 变量值
resp HttpResponse对象
rs SQL执行结果类型int或List<Map<String,Object>>

HttpResponse对象

字段名称 字段类型 字段描述
html String 页面HTML
json JSONObject/JSONArray 内容转json结果
bytes byte[] 二进制结果
cookies Map<String,String> cookies
headers Map<String,String> headers
statusCode int HTTP状态码

内置方法

  • selector
  • selectors
  • xpath
  • xpaths
  • regx
  • regxs
  • jsonpath

selector/selectors

参数一 参数二 参数三 参数四
html css选择器 text/attr/outerhtml attrName
  • 获取a标签
${selectors(resp.html,'a')}
  • 获取a标签的text
${selectors(resp.html,'a','text')}
  • 获取a标签的outerhtml
${selectors(resp.html,'a','outerhtml')}
  • 获取a标签的href
${selectors(resp.html,'a','attr','href')}

selector返回的是Stringselectors返回的是List

xpath/xpaths

参数一 参数二
html xpath
  • 获取a标签
${xpaths(resp.html,'//a')}
  • 获取a标签的href属性
${xpaths(resp.html,'//a/@href')}

xpath返回的是Stringxpaths返回的是List

jsonpath

参数一 参数二
object jsonpath
  • 获取 {"code" : 1} 中code的值
${jsonpath(resp.json,'$.code')}

regx/regxs

参数一 参数二
String regx
  • 获取页面标题
${regxs(resp.html,'<title>(.*?)</title>')}

regx返回的是Stringregxs返回的是List