本教程为大家讲解【判断条件】的使用场景与设置方法。

?

一、【判断条件】常见使用场景?

?

1、判断某一条件(如关键词)是否存在,存在就采集,不存在则不采。

例:采集京东商品信息,只想采集自营商品。可以通过判断条件】判断是否为自营商品,是则采集,不是则不采。

2、要采集的数据有多种情况,网页源码存在多种样式,需分开收集。

例:网页正文有的是图片有的文字,两者的数据提取方法不同。可以通过判断条件】判断是图片还是文字,是图片走图片采集分支,是文字则走文字采集分支。

?

3、判断页面是否出现验证码,出现则自动识别,未出现则进入下一个流程步骤。

例:100个淘宝商品详情页url,有的打开网页后正常采集,有的打开网页后出现验证码。同时,我们并不确定哪个url打开后会有验证码。可以通过判断条件】判断页面是否出现验证码,出现验证码时自动识别,未出现则进入下一个流程步骤。

?

?

二、【判断条件】具体案例

?

案例1、判断某一条件(如关键词)是否存在,存在就采集,不存在则不采。

示例网址:http://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&page=9&s=226&click=0

采集需求:判断商品是否为京东自营?。是,则采集商品列表数据,字段包括商品标题、价格、店铺名。不是,则跳过不采集。

?

?

鼠标放到图片上,右键,选择【在新标签页中打开图片】可查看高清大图

下文其他图片同理

?

操作步骤:


步骤1、先按列表数据采集方法,配置采集流程。

?

?

步骤2、开始添加【判断条件】。从流程图左侧工具栏拖入一个【判断条件】,放到流程【循环】中的【提取数据】前。点击左侧的【条件分支】,选择判断方式为【当前循环项中包含文本】,并在矩形框中输入文字【自营】作为判断依据。右侧的【条件分支】,判断方式默认为【不判断,总是执行该分支】。

?

?

特别说明:

a. 如何放置【判断条件】的位置?根据需求来,紧跟在需要判断的步骤后面。本示例中,我们是需要判断每一个循环项(即每一个商品列表)是否包含【自营】文本,包含【自营】就提取字段,不包含则不采集。因此,将【判断条件】放到【循环】中的【提取数据】前。

?

?

步骤3:设置判断后的操作。本示例的需求是 判断商品是否为京东自营?。是,则采集商品列表数据?。因此,在判断是自营后,需要有1个【提取数据】步骤。将【提取数据】步骤拖入【左侧分支】内,放在出现的加号位置。

?

?

特别说明:

a. 如果需要为【分支条件】新增其他步骤,先选中该分支,然后再做步骤即可。

?

上面流程配置完成以后,手动执行规则来看一下,判断条件是否设置正确。如下图,测试没有问题,可以正常判断是否为自营商品。

?

?

步骤4、所有操作设置完毕后,点击【保存】。然后进行【本地采集】,观察采集结果。可以看到,只有【自营】的商品被采集下来了。

?

?

2、要采集的数据有多种情况,网页源码存在多种样式,需分开收集。

网页正文有的是图片有的文字,两者的数据提取方法不同。可以通过判断条件】判断是图片还是文字,是图片走图片采集分支,是文字则走文字采集分支。点击查看?腾讯新闻图文采集实例

?

?

二、【判断条件】的界面介绍

?

1、如何选择【判断方式】?选中【条件分支】后,可以看到,共有5个判断方式,根据需求选择合适的判断方式。

? ? 【不判断,总是执行该分支】:不设置判断条件,默认勾选。一般最右侧的【条件分支】勾选此方式。

? ? 【当前页面包含文本】:判断当前页面,使用文本作为判断依据。

? ??【当前页面包含元素】:判断当前页面,使用XPath作为判断依据。

? ??【当前循环项包含文本】:判断循环项,使用文本作为判断依据。

? ??【当前循环项包含元素】:判断循环项目,使用XPath作为判断依据。

?

?

?

2、为什么对左侧的【条件分支】设置判断方式?【条件分支】至少2个,可以有多个,默认从左至右执行。先判断左边的条件,若左边的分支均不满足条件,最右边的分支将不做判断直接执行。如下图:

?

?

3、默认为2个【条件分支】。如有多个判断条件,可添加多个【条件分支】。点击【条件分支】的号,即可快速新增1个分支。

?

?

?

三、关于【判断条件】的重要说明

?

1、允许某个分支中无任何操作步骤。

2、对于需要同时判断多个条件,则需要嵌套使用多个分支判断。但建议将已选好判断条件后的网址放入八爪鱼中采集数据。

3、八爪鱼中分支判断对 【存在】 或【不存在】的是非判断,其操作性更为简单便捷。对大小的比较判断操作繁琐,需利用XPath实现。

4、判断条件的【与】用【&】 实现,【或】用【|】实现。

5、如果不同的分支内有不同的【提取元素】步骤,则每个分支内全部【提取元素】步骤中的 字段总个数 和?字段名 需保持一致。


情况1:

分支1内有提取数据步骤,提取的字段为字段1,字段2,字段3

分支2内没有提取数据步骤

这个流程可以正常执行

?

情况2:

分支1内有提取数据步骤,提取的字段为字段1,字段2,字段3

分支2内有【提取数据】步骤,提取的字段为字段a,字段b,字段c

此时流程将不能正常执行

因为八爪鱼采集器执行分支1时提取不到字段abc,分支2的提取步骤都无法提取到数据,八爪鱼采集器判断此条数据不完整,将此条数据作废不保存

解决方法:在分支1的提取步骤增加字段abc,且在分支2的提取数据步骤增加字段123。分支1和分支2的字段名称和个数必须一致,可以设置为空数据也可设为固定值。八爪鱼采集器就会认为字段都提取到了,此时数据不会作废,而是执行分支1时,字段123有数据,字段abc为空白,执行分支2时,字段123为空白,字段abc有数据

?

情况3:
多个分支内有多个不同的【提取数据】步骤,请参考情况2,保证每个分支判断中的字段,字段名及字段数量一致即可

?

?

作者:Vivi? Aisling

编辑:Aisling

?