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

SpiderFlow平台v0.5.0流程的执行过程

流程执行过程:

1. 流程启动

流程的执行通常从一个 开始节点 开始,该节点是整个爬虫任务的起点。开始节点没有实际的功能作用,主要作用是标记流程的起始。

  • 执行顺序:在执行过程中,系统按照流程中的连接线顺序依次执行每个节点。

2. 爬取节点执行

爬取节点(通常是HTTP请求节点)是爬虫流程中的核心部分,负责发送请求并获取网页数据。

  • 请求方式:根据配置,爬取节点可以发送不同类型的HTTP请求(如GET、POST等)。
  • 数据解析:爬取节点获取到页面响应后,通常会继续执行数据解析操作,提取需要的信息。解析的内容可能包括HTML、JSON、XML等。
请求流程:
  1. 系统向目标URL发送请求。
  2. 处理请求参数、请求头(Headers)、Cookie等信息。
  3. 等待服务器返回响应数据。
  4. 若请求成功,则继续下一步;若失败,重试或者跳过。

3. 数据存储节点

在数据爬取后,通常需要将爬取到的数据存储到数据库、文件、CSV文件等地方。SpiderFlow 提供了多个数据输出节点:

  • 数据库存储:执行SQL节点将数据插入到指定的数据库表中。
  • 文件存储:通过CSV输出节点将数据写入文件。
  • 输出调试:通过输出节点将结果展示在SpiderFlow界面中,方便开发调试。

4. 逻辑处理节点

爬虫流程中可能需要做一些条件判断、循环等操作,这时会使用到逻辑处理节点:

  • 条件判断节点:根据某些条件(如返回的HTTP状态码、页面内容等)决定下一步要执行哪个节点。比如,若返回的页面包含某些特定关键词,则执行某个节点,反之则跳过。

  • 循环节点:用于执行循环操作,适用于分页或多次执行相似任务。例如,如果需要爬取多个页面,可以在循环节点中定义分页逻辑。

5. 变量与参数传递

在执行过程中,可能需要在不同节点间传递变量或参数。SpiderFlow 允许用户动态地定义变量,并将其传递给其他节点。

  • 变量定义:通过变量节点定义需要在后续节点中使用的变量(如页面的链接、提取的内容等)。
  • 表达式语法:用户可以在节点中使用表达式来动态传递数据,类似于#${variable_name}#这样的动态变量。

6. 子流程与模块化

如果爬虫任务较为复杂,可以将任务拆分成多个子流程。这样可以提高复用性和流程的可维护性。

  • 调用子流程:在主流程中使用“子流程”节点来调用其他已定义的子流程。这样子流程可以单独执行,也可以作为主流程的一部分。

7. 执行结果与错误处理

在流程执行的过程中,若出现错误或异常(例如请求失败、数据解析错误等),SpiderFlow 提供了错误处理机制。

  • 重试机制:爬虫节点可以配置重试次数,若请求失败,则会进行重试操作。
  • 日志输出:系统会输出执行过程中的日志,用户可以通过日志查看爬虫的执行情况,便于调试和排查问题。

8. 流程结束

当所有节点执行完毕,流程会结束。此时,SpiderFlow 会对流程执行结果进行总结,可以查看成功的记录、失败的记录和错误日志。

  • 输出:执行结果可以通过日志、数据库、文件等多种方式输出。
  • 清理资源:结束时,系统会进行资源清理,如关闭数据库连接、清理缓存等。

流程实例分析:

简单一句话概括就是流程会按照箭头的方向一直流转下去,个别节点会打断流转(箭头)或重复流转(循环)。下面举几个例子来说明一下。

  • 流程实例一

很容易就能看出流程执行过程是: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(即形成了嵌套循环)

  • 流程实例二

  • 先说运行顺序:A->B->(C->F),(D->E)->G->H
    • 先执行A节点
    • A节点执行完毕时,执行B节点
    • B节点执行完毕时,同时执行C、D节点
    • C节点执行完毕时,执行F节点
    • D节点执行完毕时,执行E节点
    • E、F节点都执行完毕时,执行G节点(G节点是等待结束节点,所以这里会等E、F都结束,否则无论E、F哪个节点执行完毕,都会执行G节点)
    • G节点执行完毕时,执行H节点
    • H节点执行完毕时,流程结束

由于C节点是循环节点,假设C节点循环次数是3次,则上方从C节点开始则变成C,C,C->F,F,F->G->H

  • 流程实例三

  • 运行顺序:A->B->A,C->B->C
    • 先执行A节点
    • A节点执行时,执行B节点
    • B节点执行完毕时,执行A、C节点
    • 共计执行2次A,2次B,2次C。

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

总结:SpiderFlow v0.5.0 流程执行过程

  1. 开始节点:触发流程执行。
  2. 爬取节点:执行HTTP请求获取数据。
  3. 数据存储节点:将数据存储到数据库或文件中。
  4. 逻辑处理节点:处理业务逻辑,如条件判断、循环等。
  5. 变量与参数传递:在不同节点间传递数据。
  6. 子流程调用:通过子流程节点调用其他流程,保持模块化。
  7. 错误处理:在遇到错误时进行重试或记录错误日志。
  8. 流程结束:流程结束,进行资源清理和输出执行结果。

通过这些节点,用户可以灵活地设计和执行爬虫任务。每个节点都有明确的功能,配合流程图的设计,使得爬虫开发变得更加可视化和易于管理。

http://www.lryc.cn/news/508633.html

相关文章:

  • 利用.NET Upgrade Assitant对项目进行升级
  • JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
  • [计算机网络]ARP协议的故事:小明找小红的奇妙旅程
  • 数学竞赛网站:构建互动学习的网络平台
  • IntelliJ IDEA 快捷键大全:提升开发效率的利器
  • 机器人角度参考方式
  • VSCode:IDE显示设置 --自定义字体及主题颜色
  • docker run命令大全
  • Debezium日常分享系列之:Debezium 3.0.5.Final发布
  • 机器学习常用评估Metric(ACC、AUC、ROC)
  • uniapp 微信小程序 功能入口
  • typora数学符号
  • 如何保障多个Facebook账号稳定运行:一账号一稳定IP?
  • 今日总结 2024-12-23
  • c++------------------函数
  • 软件信息化平台项目投标技术方案中如何进行项目实施方案以及安全质量方案培训售后方案应急预案的编写?
  • Apache Tomcat 漏洞CVE-2024-50379条件竞争文件上传漏洞 servlet readonly spring boot 修复方式
  • 中国信通院致信感谢易保全:肯定贡献能力,期许未来合作
  • 20241220流水的日报 mysql的between可以用于字符串 sql 所有老日期的,保留最新日期
  • 低代码开源项目Joget的研究——安装部署
  • 《鸿蒙开发-答案之书》字符串占位符格式化
  • workman服务端开发模式-应用开发-gateway长链接端工作原理
  • Android 关于Tencent vConsole 添加入webView 总结
  • 【路径规划】原理及实现
  • 【AIGC】ChatGPT 结构化 Prompt 的高级应用
  • Go web 开发框架 Iris
  • uniapp Native.js 调用安卓arr原生service
  • C#代码实现把中文录音文件(.mp3 .wav)转为文本文字内容
  • 【一文了解】C#重点-委托1
  • WPF+MVVM案例实战与特效(四十五)- 打造优雅交互:ListBox 的高级定制与行为触发(侧边菜单交互面板)