spider-flow/document.md

140 lines
4.2 KiB
Markdown
Raw Normal View History

2019-07-22 10:43:31 +08:00
# spider-flow使用说明
#### 启动
2019-07-22 11:03:48 +08:00
- 本项目为SpringBoot项目,运行SpiderApplication类,访问[http://localhost:8088/](http://localhost:8088/)即可
2019-07-22 10:43:31 +08:00
2019-07-22 15:33:40 +08:00
#### 演示站点
[点击跳转](http://39.105.125.219:8088/)
> 服务器配置较低,如有卡顿请谅解
2019-07-22 10:43:31 +08:00
#### 图形说明
| 图形 | 图形说明 |
| ----- | --- |
| 正方形 | 抓取页面 |
| 平行四边形 | 定义变量 |
| 双边矩形 | 输出(主要用于测试输出至页面表格) |
| 圆柱 | 定义数据源 |
| 双正方形 | 执行SQL |
| 箭头 | 流转方向 |
#### 抓取页面
- 循环变量用来定义循环变量主要目的是抓取多个同类URL,如projectIndex
- 循环次数:定义循环次数,可使用${}从变量中获取值FreeMarker语法10
- 起始URL抓取地址可使用${}从变量中获取值FreeMarker语法https://gitee.com/${projectUrls[projectIndex]}
- 请求方法GET、POST
- 请求参数:用来设置请求参数,可添加多个,参数值处可使用${}来获取值
- 请求header用来设置请求header可添加多个header值处可使用${}来获取值
2019-07-24 15:05:38 +08:00
- 代理host:port
2019-07-22 10:43:31 +08:00
#### 定义变量
- 变量名:定义变量名称
2019-07-22 11:00:59 +08:00
- 变量值:```可使用${}从变量中获取值FreeMarker语法${selectors(resp.html,'.categorical-project-card a','attr','href')}```
2019-07-22 10:43:31 +08:00
#### 定义数据源
- 数据库类型目前仅支持Mysql(其它驱动未引入至项目中)
- 数据库连接jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
- 用户名root
- 密码,如123456
> 需要注意的是,此处不支持${}语法
#### 输出
- 输出项,该值为页面中显示表格的列名
- 输出值,该值为页面中显示表格单元格值,语法同样支持${}
#### 执行SQL
- 数据源,选择之前定义好的数据源
- 语句类型select/insert/update/delete
2019-07-22 11:00:59 +08:00
- SQL语句如```INSERT INTO gitee_gvp(project_name, project_link,project_desc) VALUES (#${projectNames[projectIndex]}#,#${projectUrls[projectIndex]}#,#${projectDesc}#)```
2019-07-22 10:43:31 +08:00
> 需要注意的是SQL语句不支持${}语法,但是参数是支持的,另外参数需要用##包起来
#### 箭头
- 条件,每个箭头都可以添加条件,当条件成立时,才流向所指向的节点,不写即不判断,直接流向下一个节点
#### 内置变量
| 变量名称 | 变量值 |
| -------- | ------ |
| resp | HttpResponse对象|
| rs | SQL执行结果类型int或List<Map<String,Object>> |
#### HttpResponse对象
| 字段名称 | 字段类型 | 字段描述 |
| -------- | -------- | -------- |
| html | String | 页面HTML |
| json | JSONObject/JSONArray | 内容转json结果 |
2019-07-22 11:02:22 +08:00
| bytes | byte[] | 二进制结果 |
2019-07-22 10:43:31 +08:00
| cookies | Map<String,String> | cookies |
| headers | Map<String,String> | headers |
| statusCode | int | HTTP状态码 |
2019-07-22 10:53:46 +08:00
#### 内置方法
- selector
- selectors
- xpath
- xpaths
- regx
- regxs
- jsonpath
#### selector/selectors
| 参数一 | 参数二 | 参数三 | 参数四 |
| ------ | ------ | ------ | ------ |
| html | css选择器 | text/attr/outerhtml | attrName |
- 获取a标签
2019-07-22 10:59:23 +08:00
```javascript
${selectors(resp.html,'a')}
```
2019-07-22 10:53:46 +08:00
- 获取a标签的text
2019-07-22 10:59:23 +08:00
```javascript
${selectors(resp.html,'a','text')}
```
2019-07-22 10:53:46 +08:00
- 获取a标签的outerhtml
2019-07-22 10:59:23 +08:00
```javascript
${selectors(resp.html,'a','outerhtml')}
```
2019-07-22 10:53:46 +08:00
- 获取a标签的href
2019-07-22 10:59:23 +08:00
```javascript
${selectors(resp.html,'a','attr','href')}
```
2019-07-22 10:53:46 +08:00
> selector返回的是Stringselectors返回的是List<String>
#### xpath/xpaths
| 参数一 | 参数二 |
| ------ | ------ |
| html | xpath |
- 获取a标签
2019-07-22 10:59:23 +08:00
```javascript
${xpaths(resp.html,'//a')}
```
2019-07-22 10:53:46 +08:00
- 获取a标签的href属性
2019-07-22 10:59:23 +08:00
```javascript
${xpaths(resp.html,'//a/@href')}
```
2019-07-22 10:53:46 +08:00
> xpath返回的是Stringxpaths返回的是List<String>
#### jsonpath
| 参数一 | 参数二 |
| ------ | ------ |
| object | jsonpath |
- 获取 **{"code" : 1}** 中code的值
2019-07-22 10:59:23 +08:00
```javascript
${jsonpath(resp.json,'$.code')}
```
2019-07-22 10:53:46 +08:00
#### regx/regxs
| 参数一 | 参数二 |
| ------ | ------ |
| String | regx |
- 获取页面标题
2019-07-22 10:59:23 +08:00
```javascript
${regxs(resp.html,'<title>(.*?)</title>')}
```
2019-07-22 10:53:46 +08:00
> regx返回的是Stringregxs返回的是List<String>