八爪鱼采集入门到熟练——05八爪鱼采集套路!

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

一, 采集时可能遇到的采集大坑和套路

1. 登陆-cookies和重复登录

Cookies的用处很多,尤其是很多网站为了避免频繁出现用户讨厌的反复登陆对话框,都用Cookies做临时的记录,当用户再次访问网站的时候,缓存的Cookies可以帮助用户登陆网站。这对数据采集的好处也是如此,记录了已经登陆账户的Cookies就可以避免下次采集器重新输入用户名和密码,也可以跳过一些登录时需要做的复杂验证(比如验证码、拉滚动条、点击图片等)。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

这里的坑有几点,首先Cookies登陆不是无限期的,现在大都会有时间期间,过期之后还需要重新登陆,所以别期待可以永久不用重新登录采集;其次有些网站的Cookies登陆的账户是和IP是相关的,也就是当你用不同的IP使用同一个Cookies登陆时,可能会强制要求你重新登录。例如会提示你的账户被盗,请重新登陆或建议修改密码,这就有可能中断采集程序。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

解决套路就是测试一下,不行就一个Ip一个Cookies,多开启几个采集规则,就相当于开启多个线程一样进行采集。切记云采集无法给每个节点单独制定Cookies和IP,所以很有可能就会卡在同时登陆上。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

2. 元素定位-通过点击方法定位不准

具体使用过八爪鱼点击元素采集的人,单个元素通常问题不大,但是跨页面和循环的时候,原本这个页面上定位的元素,下一个页面上可能就无法定位同样的元素了。这个在用的少的人眼里可能没遇到,但是如果长期使用八爪鱼采集器采集很多种网站就会遇到这些情况,比如我这个页面想采集某新闻网站发稿人,采集几个页面后,某篇文章和这个文章风格有区别,同样的定位就采集不到发稿人了。这都是Xpath语句导致的问题。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

首先通过点击的Xpath类似大家在火狐浏览器种元素定位时自动生成的Xpath语句,这种语句是非常死板的语句,大概结构类似./table/tr[1]/a[1],一个很简单的办法就是看是否包含大量的[数字]这种,一般这种就是我们所述的死规则,因为a[1]的意思是找出第一个a标签,这个页面可能是第一个,下一个页面可能就不是第一个了,所以高手通常是采取相对定位或者模糊定位,建议大家多用xpath的一些高级定位语句和contains语句。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

3. 元素定位-写入Xpath但是无法定位(浏览器里测试可以定位)

虽然有几种可能性,不过一种最不容易察觉到的可能是网站使用了iframe标签,通常如果是通过点击定位元素,是会自动填写iframe选项的,但是我这种先自己在浏览器里用辅助工具写xpath测试的时候没有提示,就会漏掉。这个时候就需要注意这种可能性,把iframe的定位也一起填进去就可以了,八爪鱼有这个选项。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

4. 翻页-无限翻页

这个问题比较常见,经常会遇到我已经生成了循环点击下一页的循环,但是莫名其妙的会在前几页循环,就是不到后面的页面。还有就是可能到了最后一页不跳出,一直不停的刷新。这些都是Xpath定位问题导致的。因为可能性有好几种,解决套路也不同,所以建议大家看我博客里写的各个文档对照自己的问题。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

5. Ajax加载-别乱设置,可能漏数据

Ajax加载的判断方式比较多,简单的办法是点击下一页的时候,网址没有任何改变,就可以判定为使用了Ajax加载。这种的出现在很多新闻网站,比如汽车之家新闻的评论页里。如果可以确定这个页面没有Ajax,那么可以勾选八爪鱼里的非Ajax页面加速,提高载入速度。如果有的话,则需要勾选Ajax加载,并且选择好加载时间。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

这里有几个坑,如果页面没有ajax加载,你也可以勾选ajax加载,并不影响页面载入,但是加载时间假设选择了2秒,八爪鱼会在2秒后判定这个页面已经加载完毕,如果有没加载完的数据也可能会无视掉,这就导致了有可能丢数据。所以建议是如果页面没有ajax加载,就不要选,如果有,则要根据页面响应速度(其实很大程度上是这个页面的js加载和运行效率)来决定需要加载几秒。单机多测试一下,别一下子就去云采集,保不齐你就被坑了。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

6. 数据提取-提取出来一堆我不想要的怎么办?

数据提取都是从html代码中提取出来的,所以就出现了看你想提取什么的问题,如果只是想提取前端页面能看到的文本,通常直接提取就可以了,这点在八爪鱼里是比较傻瓜化的,效果也很不错。不过网页结构千奇百怪,有各种各样的内嵌问题。有一种情况是文字分成了多段,然而我们却想采集这一整段,这个可能在前段页面看不出来,看代码才能发现文字被各种别的内嵌元素隔开了。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

解决套路也不太复杂,如果是一般的,就对某一整段,比如P标签采集文字,然后用正则表达式或者普通的替换来清理掉不想要的字符串、空格、换行等等。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

7. 条件判断-if else大法

八爪鱼的条件判断比不了写代码,但是也算工具里很强的了。八爪鱼里能实现的逻辑判断就是如果a元素出现了/a元素没出现则执行xxx,如果页面出现文本xxx或者没出现文本xxx,则执行xxx。用程序员俗话说就是if a then xxx,else if b then xxx,else xxx。可以用多个条件来判断,所以并不局限于一两个条件,当前面的条件判断都是false的话,就会执行默认的流程。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

这个有啥套路呢,主要是批量采集页面的时候,会遇到有区别的页面。比如,采集网易新闻列表里的新闻页,虽然都叫新闻,但是页面格式是有区别的,这就导致采集元素定位和流程可能完全是不同的。所以以某些条件作为逻辑判断,比如出现什么元素,我就认为是这种新闻页面,就采用这个采集流程;出现另一个元素就认为是另一种新闻,换一个采集流程,这样就可以比较好的解决同文章列表,详情页却不同的问题。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

8. 失败重试-莫名其妙的失败,不莫名其妙的重试

失败重试是个玄学问题,失败的可能性太多,比如对方应用服务器卡了,页面数据没返回、服务器500错误了、服务器403转向了、页面某些部分没加载、页面加载超时了等等。只要想采集的数据条目没出现,这个7页面就算加载了也是失败,但是出现的情况有很多种,所以设置失败重试的套路就是找个如果正常采集肯定会出现的元素,如果没出现,就启动重试,但是要设置一下间隔,将采集效率和稳定性结合考虑。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

9. 图片下载

很多人抱怨八爪鱼图片下载好麻烦,官方提供的下载器用起来好复杂。套路也很简单,只要把图片链接采集下来就行了,下载这个东西嘛,我有大迅雷我要八爪鱼的干嘛?迅雷批量下载输入进去,世界清净了(其实不清净,迅雷下载完成的叮声会此起彼伏)。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

二, 常见的“歪门邪道”

1. 正常采集不好弄?改从Wap版采集

很多网站都有普通网页版和通过手机访问的Wap版,很多时候当你发现网页版很难采集,遇到很多问题的时候,就可以考虑换Wap版登录了。找到Wap版网址有时候不太容易,可以尝试先从手机浏览器里搜索一下,找到网址再放到八爪鱼采集器里,勾选手机版本便可以尝试采集。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

需要说明的是,手机版本在八爪鱼采集器里显示情况不一定和手机上的一致,很多时候会出现不好操作或者莫名其妙的问题。这个也是没办法的,毕竟不是专门的手机模拟器,所以需要多尝试,多一种采集路线就多一个机会。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

2. 自动登录很困难?留下反应时间改成手动

比如知乎这样的网站,或者其他的那些各种需要各种“神奇”验证的网站,有的时候是登录的时候需要验证,有的时候是采集过程中为了反采集加入了验证。一切的一切都是为了抹杀低级爬虫和采集工具。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

这个时候我们最好的办法就是加入人工处理操作,规则编制过程中可以通过条件判断或者在特定操作前加入等待时间,单机采集的过程中可以通过人手工操作来解决验证问题。这样确实效率不高,但是在钱不是问题,问题是没钱的这个时代,人就是最便宜的东西……所以用自己的身体……干活吧……

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

3. 瀑布流“点击加载更多”页面?单独建立一个循环用来点击它

很多网站需要不停地点击“加载更多”才能载入更多的列表页,这个时候页面载入之后,只要单独建立一个循环,在循环里设定为不停地点击这个“加载更多”就可以了,记得要选择点击单独元素,类似自动翻页的循环。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

在这个循环下面,就可以继续创建采集列表的循环了。但是这种采集方法不一定适合所有页面,虽然最好的办法是抓包分析,不过八爪鱼里,还是用这种方法对付一下吧。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

4. 采集速度好慢_(:з)∠)_ 多个小细节选项帮你加速

日常采集过程中,大家都希望可以尽快采集完数据,但是又不是谁都有钱买旗舰版。那么就得把单机版利用好,第一神器,勾选阻止广告,降低广告加载对速度的影响;第二神器,勾选不加载图片,大幅度降低图片数据加载时间;第三神器,勾选非Ajax页面加载优化,小幅度提高普通页面速度;第四神器,升级硬件……虽然是废话,但是老掉牙的机器和网络是无法提高软件运行以及采集速度的,虽然硬件提升很多也不会对软件运行速度有很大提升,但是内存的确保还是很重要的,足够的内存可以降低大量数据采集或者多线程运行时的卡顿。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

内容版权声明:以上内容均为转载,如有侵犯原作者请联系删除!