Skip to content

EXEC和EVAL用法示例

Naibo Wang edited this page Sep 5, 2023 · 9 revisions

此案例的任务示例JSON文件在这里:https://github.com/NaiboWang/EasySpider/blob/master/Examples/220.json

需求:一直不停的翻页的情况下,检测到页面//div[1]元素的内容不再变化时停止循环翻页。

操作流程(0.5.0及以上版本):

  1. 在循环开始前添加自定义操作,执行模式为exec操作,自定义一个变量,设置一个随机的初始值:
self.myVar = "-1"

image

  1. 按照正常流程,设计循环点击下一页并采集数据的需求。

  2. 在循环内流程的内部最后,添加提取数据操作,提取//div[1]元素的文本,字段名称可任意设置,如检测字段

(可选)4. 如果不需要保存检测字段的值到文件,可设置是否保存该字段选项为

  1. 提取数据操作后,添加条件判断操作,最左边的条件分支的条件类型为eval操作,内容如下,来判断新提取的字段内容是否和自定义的myVar变量中保存的值一致:
self.myVar == self.outputParameters["检测字段"]

其中,self.outputParameters["检测字段"]即表示字段检测字段的最新提取到的值。

image

接下来,在此条件分支内部添加自定义操作,模式为Break,即跳出当前循环:

image

  1. 最后,设置条件判断操作中的的第二个条件分支,即从左往右数第二个条件分支,条件类型为无条件,分支内部插入一个自定义操作,执行模式为exec操作,将自定义的myVar变量值修改为当前页面指定元素的文本,这里即用self.outputParameters["字段名"]来保存刚刚提取到的字段值:
self.myVar = self.outputParameters["检测字段"]

image image

即完成了此需求。

全流程展示:

image