高效智能的在线爬虫-spider-flow

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的spider-flow可以用流程图的方式编写爬虫的平台,无需写代码就可以快速完成一个简单的爬虫。

高效智能的在线爬虫-spider-flow

功能特性

  • • 支持 css 选择器、正则提取

  • • 支持 JSON/XML 格式

  • • 支持 Xpath/JsonPath 提取

  • • 支持多数据源、SQL select/insert/update/delete

  • • 支持爬取 JS 动态渲染的页面

  • • 支持代理

  • • 支持二进制格式

  • • 支持保存/读取文件(csv、xls、jpg 等)

  • • 常用字符串、日期、文件、加解密、随机等函数

  • • 支持流程嵌套

  • • 支持插件扩展(自定义执行器,自定义函数、自定义 Controller、类型扩展等)

  • • 支持 HTTP 接口

安装部署

准备环境

JDK >= 1.8
Mysql >= 5.7
Maven >= 3.0 下载地址:(http://maven.apache.org/download.cgi)

运行项目

  1. 1. 前往码云下载页面 (https://gitee.com/ssssssss-team/spider-flow) 下载解压到工作目录

  2. 2. 设置 Eclipse 仓库,菜单 Window->Preferences->Maven->User Settings->User Settings 后边的 Browse,然后导入自己的 Maven 目录的 conf 目录下的 settings.xml 文件,然后点 Apply,在点 OK

  3. 3. 导入到 Eclipse,菜单file->Import,然后选择Maven->Existing Maven Projects,点击 Next>按钮,选择工作目录,然后点击Finish按钮,即可导入成功

  4. 4. 导入数据库,基础表:spider-flow/db/spiderflow.sql

  5. 5. 打开并运行 org.spiderflow.SpiderApplication.java

  6. 6. 打开浏览器,输入 http://localhost:8088/

引入插件

  1. 1. 首先把需要的插件下载到本地并导入到工作空间或安装到maven库

  2. 2. 在 spider-flow/spider-flow-web/pom.xml 中引入插件

<!-- 以引入mongodb插件为例 -->
<dependency>
    <groupId>org.spiderflow</groupId>
    <artifactId>spider-flow-mongodb</artifactId>
</dependency>

快速入门

爬取节点

该节点用于请求 HTTP/HTTPS 页面或接口

  • • 请求方法:GET、POST、PUT、DELETE等方法

  • • URL: 请求地址

  • • 延迟时间:单位是毫秒,意思是爬取之前延迟一段时间在执行抓取

  • • 超时时间:网络请求的超时时间,单位也是毫秒

  • • 代理:请求时设置的代理,格式为 host:port 如 192.168.1.26:8888

  • • 编码格式:用来设置页面的编码格式默认为UTF-8,当解析出现乱码时,可以修改此值

  • • 跟随重定向:默认是跟随30x重定向,当不需要此功能时,可以取消勾选

  • • TLS 证书验证:此项默认是勾选的,当出现证书一类的异常可以取消勾选此项尝试

  • • 自动管理 Cookie:请求时自动设置 Cookie(自己手动设置的与之前请求的Cookie都会设置进去)

  • • 自动去重:勾选时会对 url 进行去重处理,如果重复则跳过。

  • • 重试次数:当请求发生异常或状态码不为200时会进行重试

  • • 重试间隔:重试期间的间隔时间(单位为毫秒)

  • • 参数:用来设置 GET、POST 等方法的参数设置

    • • 参数名:参数 key 值

    • • 参数值:参数 value 值

    • • 参数描述:仅仅用来描述该项参数(相当于备注/注释)无实际意义

  • • Cookie:用来设置请求 Cookie

    • • Cookie 名:Cookie key 值

    • • Cookie 值:Cookie value 值

    • • 描述:仅仅用来描述该项 Cookie(相当于备注/注释)无实际意义

  • • Header:用来设置请求头

    • • Header名:Header key 值

    • • Header值:Header value 值

    • • 描述:仅仅用来描述该项 Header(相当于备注/注释)无实际意义

  • • Body:请求类型(默认是 none)

  • • form-data(Bod y项设置为 form-data)

    • • 参数名:请求参数名

    • • 参数值:请求参数值

    • • 参数类型:text/file

    • • 文件名:上传二进制数据时需要填的文件名

  • • raw(Body项设置为 raw)

    • • Content-Type:text/plain,application/json

    • • 内容:请求体内容(String类型)

定义变量 Var

该节点用于定义变量之后,可以与表达式配套使用,实现动态设置各项参数(如动态请求分页地址)

  • • 变量名:变量的名字,当变量名重复时,会覆盖前一个变量

  • • 变量值:变量的值,可以是常量,可以是表达式

输出节点

该节点主要用于调试,测试时会把输出打印到页面中,另外也可以用来自动保存到数据库或文件

  • • 输出到数据库:勾选时需要填写数据源、表名称,且输出项要与列名对应

  • • 输出到 CSV 文件:勾选时需要填写 CSV 文件路径,输出项会作为表头

  • • 输出全部参数:一般用来调试,可以输出所有变量到界面上

  • • 输出项:输出项的名字

  • • 输出值:输出的值,可以是常量,也可以是表达式

循环节点

  • • 次数或集合:当此项有值(值为集合或数字)时,后续节点(包括本节点)会循环执行

  • • 循环变量:默认为 item,与 for(Object item : collections) 中的 item 意义相同

  • • 循环下标:当循环时,会产生下标(从0开始)以该值存入变量中,与 for(int i =0; i < array.length;i++)中的i意义相同

  • • 开始位置:从该位置开始循环(从0开始)

  • • 结束位置:到该位置结束(-1为最后一项,-2为倒数第二项,以此类推)

执行SQL

主要用于与数据库交互(查询/修改/插入/删除等等)

  • • 数据源:需要选择配置好的数据源

  • • 语句类型:select/selectInt/selectOne/insert/insertofPk/update/delete

  • • SQL:要执行SQL语句,需要动态注入的参数用##包裹起来如:#${item[index].id}#

流程的执行过程

流程实例一

高效智能的在线爬虫-spider-flow

很容易就能看出流程执行过程是:A->B->C->D,但由于A节点是循环,假设A节点循环次数是3,那么此时执行过程会变成A,A,A->B,B,B->C,C,C->D,D,D(3个A一起执行,但是顺序不固定,每执行完一个就会直接流向下一个节点,而不是等3个A都结束),当D,D,D都执行完毕时,由于没有流向下一个节点,此时整个流程结束。

由于B,C,D节点中也可以设置循环,假设C节点也设置了循环,其循环次数是2次,那么此时整个流程的执行过程是A,A,A->B,B,B->C,C,C,C,C,C->D,D,D,D,D,D(即形成了嵌套循环)

流程实例二

高效智能的在线爬虫-spider-flow

  • • 运行顺序:A->B->A,C->B->C

    • • 先执行A节点

    • • A节点执行时,执行B节点

    • • B节点执行完毕时,执行A、C节点

    • • 共计执行2次A,2次B,2次C。

这里会形成递归,即A<->B,但是形成这种情况时,往往都需要加条件进行限制,即上图中的页数 < 3

项目部分截图

高效智能的在线爬虫-spider-flow爬虫列表

高效智能的在线爬虫-spider-flow爬虫

高效智能的在线爬虫-spider-flowdebug

高效智能的在线爬虫-spider-flow日志

—END—

开源地址:https://github.com/ssssssss-team/spider-flow

原文始发于微信公众号(开源技术专栏):高效智能的在线爬虫-spider-flow

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/53758.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!