讲这个案例主要是想帮助大家理解云采集的原理,理解之后再根据这个思路去优化自己的云采集规则,以便获得更高的采集速度。

云采集速度对比:两个任务都是开私有云跑的(这样就不存在某个任务需要排队的情况)
                           并且所占节点数我都调整为10个节点了

 

云1.png

 

我们先来看原规则:

这个规则的目的是提取网页列表的URL,这个规则单机采集是没问题的,所有数据都会正常出来

但是这个规则有个问题,Ajax没设置,导致翻页大概需要2分钟...

Ajax设置教程

 

其实如果设置好了Ajax,单机采集的话两个规则的速度都一样,硬要比的话,优化后的也许还会比优化前的还慢不到1秒,因为多了一个输入页码的步骤

云2.png

 

看过云采集加速原理的都知道,循环列表的固定元素列表,URL列表和文本列表的才会拆分任务。

 

 

 

而这个规则这里也是照着这个做的,用的固定元素列表,拆分是拆分了,这个任务也确实占了10个节点,但是并没有加速的效果,这是为什么!

因为在一个规则中最耗时间的是打开网页!打开了网页之后的提取数据并不占几秒的时间,但是按照固定列表拆分之后,它就变成了以下状态:

子节点1:打开网页(5秒)-提取第1条数据-点击翻页(大概2分钟)-提取第1条数据

子节点2:打开网页(5秒)-提取第2条数据-点击翻页(大概2分钟)-提取第2条数据

子节点3:打开网页(5秒)-提取第3条数据-点击翻页(大概2分钟)-提取第3条数据

...

...

子节点10:打开网页(5秒)-提取第10条数据-点击翻页(大概2分钟)-提取第10条数据

一个子节点花了5秒的时间打开了一个网页才得到1条数据,10个节点同时采集又能多快...

 

而单机采集(假设网速与云相同)

打开网页(5秒)-提取第1-10条数据-点击翻页(大概2分钟)-提取第1-10条数据...

 

在同一个页面内,提取1条数据跟提取10条数据的速度,相信大家试过都知道,速度基本没差。

 

也就是这个规则云采集跟单机采集是基本没有区别的,即使他占满了10个节点...

 

现在我们想要优化采集规则时,首先要观察网页,根据网页特性来优化,每个网页的优化方式不一定一样。

 

我经常用到的方式是URL内如果包含了页码的,直接用循环打开URL网页的方式代替翻页循环,这样拆分任务后就是一个节点打开一部分页面,具体哪部分不清楚,是系统随机拆分的。

 

但是现在这个网页每一页的URL都一样的,这种方式就不合适了。

 

那么再来观察网页,可以发现有个跳转至多少页按钮

云3.png

 

这个就可以用文本循环,将页码都写进文本,循环输入页码,点击GO,用这个来代替翻页循环,提取数据的循环还是按原来的提取没问题,因为拆分任务只会拆最外层的循环列表,但如果最外层是翻页循环,就自动拆里面一层。

这个优化规则的循环里我只放了1000个页码,让大家看一下效果,实际采集只需要继续增加页码,把页码都写进去就可以,列表里建议是最多放2万条,2W条以上规则损坏的机率会变大,如果要试可以先把规则备好份,万一损坏了还有备份...

云4.png

 

好了,看下这个规则在用云采集拆分了之后是怎么运行的

这个规则被拆分成了100个子任务,那就是每个子任务里有10个页码,假设那十个页码是顺序的,

子节点1:打开网页(5秒)-输入页码1-点击跳转(3秒)-提取第1-10条数据-输入页码11

子节点2:打开网页(5秒)-输入页码2-点击跳转(3秒)-提取第1-10条数据-输入页码12

子节点3:打开网页(5秒)-输入页码3-点击跳转(3秒)-提取第1-10条数据-输入页码13

...

...

子节点10:打开网页(5秒)-输入页码10-点击跳转(3秒)-提取第1-10条数据-输入页码20

 

那么这时候就是真正的云采集十倍速运行,不算上把规则上传到云,然后拆分任务,分配云节点,采集到的数据上传到数据库的时间的话,那么这个任务是前8秒100条数据,往后每3秒100条数据。

 

 

其他云加速的案例:

云采集规则优化加速案例(1)——不固定元素列表转固定元素列表