流程执行过程:
1. 流程启动
流程的执行通常从一个 开始节点 开始,该节点是整个爬虫任务的起点。开始节点没有实际的功能作用,主要作用是标记流程的起始。
- 执行顺序:在执行过程中,系统按照流程中的连接线顺序依次执行每个节点。
2. 爬取节点执行
爬取节点(通常是HTTP请求节点)是爬虫流程中的核心部分,负责发送请求并获取网页数据。
- 请求方式:根据配置,爬取节点可以发送不同类型的HTTP请求(如GET、POST等)。
- 数据解析:爬取节点获取到页面响应后,通常会继续执行数据解析操作,提取需要的信息。解析的内容可能包括HTML、JSON、XML等。
请求流程:
- 系统向目标URL发送请求。
- 处理请求参数、请求头(Headers)、Cookie等信息。
- 等待服务器返回响应数据。
- 若请求成功,则继续下一步;若失败,重试或者跳过。
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 流程执行过程
- 开始节点:触发流程执行。
- 爬取节点:执行HTTP请求获取数据。
- 数据存储节点:将数据存储到数据库或文件中。
- 逻辑处理节点:处理业务逻辑,如条件判断、循环等。
- 变量与参数传递:在不同节点间传递数据。
- 子流程调用:通过子流程节点调用其他流程,保持模块化。
- 错误处理:在遇到错误时进行重试或记录错误日志。
- 流程结束:流程结束,进行资源清理和输出执行结果。
通过这些节点,用户可以灵活地设计和执行爬虫任务。每个节点都有明确的功能,配合流程图的设计,使得爬虫开发变得更加可视化和易于管理。