首先八爪鱼采集器功能比较多,而且对比主流的采集软件八爪鱼采集器不落下风。我个人比较熟悉的主流采集工具有火车采集器、火车浏览器、八爪鱼、GooSeeker等。而这些软件之中,火车采集器效率极高,爬取速度快,但是规则配置烦琐,有一些高级功能必须付费版,甚至高级付费版才能使用,烦死……火车浏览器功能强大,但是和采集器不一样,它以模拟网页操作的形式来采集或者操作网页,效率低于火车采集器,和八爪鱼差不太多,功能各有千秋,费用就不怎么样了,贵到死。GooSeeker只是简单用了一下,基本功能还可以,规则编制有些繁琐,部分其他采集工具能实现的高级功能它不太好实现,至少我没直接看懂怎么实现。八爪鱼作为可视化型的采集工具,算是最折中和方便的,配置规则速度快,比费劲分析写爬虫代码容易。
首先有一些很麻烦的坑我要说一下为什么其他几种采集方法会很费劲。AJAX加载技术大家已经比较清楚了,而且已经运用到了很多网站之中,这种技术对傻瓜采集工具和小白用户来说是致命的,首先你采集不到合适的数据,其次你也无法很好地使用傻瓜软件翻页和下拉到页面底端,麻烦到死。
火车采集器没有网页操作能力,能支持的只是通过POST和GET等方式获得内容详情页,再进行采集,这就需要使用到抓包工具Fiddler来抓包分析,好拼配组合出需要采集的网址。中途过程之酸爽,估计让很多小萌新吐血到死。苦逼的是,一个网站一个样,也没什么太好的通用型教程,小白只能吐血而死。还有就是,如果你只花了几百块钱买了个版本,那么……JSON数据无法解析啊,我就XXX它们……不能解析的话,很多主流新闻网站的评论都废掉了。火车浏览器就不说了,功能很好,就是设置规则繁琐,免费版只能运行30分钟,适合有钱和有技术人员的中小企业。
网络爬虫技术JAVA的我不懂,我只熟悉Python的,基本静态页面爬取和分析那简直是爽歪歪,轻松搞定多线程啪啪啪!但是对AJAX最烦人的,最容易遇到的几个问题:
A,下拉到页面底端才会加载数据
B,网址不会改变,点击上下页只会异步加载数据(多用于分页文章或者评论)
C,里面有加密或者需要js代码中获取某些数据之类的
如果偷懒,那就用Selenium+PhantomJS,采取执行部分页面JS脚本,或者通过DOM定位等形式来加载出来需要的数据。如果想要速度,可以通过抓包工具分析,然后程序拼出网址,最终采集的方式。Python对JSON数据解析还是很给力的,虽然对于数据里带“,”的格式解析容易出问题,我到现在也不是太会处理。需要再研究一下。总之程序是万能的,就看程序猿水平如何了…… _(:з」∠)_(哦,我不是程序猿……我是产品汪啊……)
八爪鱼这一点完全是小白化、智能化、傻瓜化的,也许一些公司的领导会觉得这么简单就能采集了,找个实习生就解决了,没技术含量。对此我只能说,这群自以为是领导就不思进取到处忽悠骗钱的SB,他们哪里知道这软件的好玩之处。虽然我很想买个企业版,不过公司里有技术人员,又会写爬虫,实在不值得掏这个成本了,所以算了。
所谓简单只是表面的,实际上八爪鱼想用好了需要知道HTML语言结构、XPATH规则、正则表达式等基本知识。以下是我遇到和发现的一些问题,简单分享一下。
我自己最近用云采集也经常遇到一些问题,采集运行一段时间就停止了,一开始也郁闷,八爪鱼云采集怎么这么不给力。但是后来我仔细分析了一下规则之后,我感觉,除了一些特殊情况,比如八爪鱼后台在调整之类的,云采集出问题的常见原因还是以下的:
1,小白傻瓜化点点点,这类的不会写准确的XPATH,也不会分析页面源码,所以一旦页面数据格式变化了,死板的点击生成的规则就很容易废掉;
2,没有足够的判断语句来跳出循环,有些页面的下一页直接点击会出问题,还有一些的下一页,点击生成规则就会无限循环,必须有判断语句判断是否到了最后一页,比如汽车之家新闻评论采集就会如此。所以最好的方法就是看源代码判断是否可以用傻瓜方式写翻页循环,否则就需要自己XPATH定位元素;
3,官方的教程很实用,基本都看完一遍掌握以后,大部分的问题就都能解决了,有一些解决不了的,大多数是不懂HTML结构和XPATH定位原理导致的。
蛋疼的帮很多人改了代码问题以后的总结就是:好好学看源码,好好学看源码,好好学看源码……重要的事情说三遍!
下面说一个简单的实例:
采集需求:对汽车之家新闻列表里所有包含“丰田”关键词的新闻,采集所有下面的评论。
采集分析:需要从新闻列表页-进入新闻文章页-进入评论列表页-采集。形成循环,最终采集一共3300多页的数据。
如果用点点点和循环大法,很快就可以写出来代码,单机执行首先出错,云采集更出错。各种重复采集、重复加载、无限循环。为什么呢?因为页面变化了,虽然变化不多,万幸!首先XPATH定位要精准,需要点击的元素都需要精准定位,确保循环执行不出错。其次翻页循环会遇到无限循环问题,需要看清下一页A标签的class内容变化,从而精准定位。
再有就是加入判断语句,多重嵌套判断语句没有问题,虽然看着有些乱,但是最后判断语句可以帮助流程顺利执行下去。非要说起来的话,这种判断语句比写python代码简单太多了,根本不叫事。
最后我的规则就变成了一大堆框框合并在一起的“东西”……但是这样的好处就是,我的云采集完整的执行下来了,而且编写脚本的时间比python快得多,虽然功能有缺失,但是对于临时采集项目来说很方便,我对于小型数据分析一般都用这种方法直接采集数据。python主要用于并行多线程采集和复杂数据清洗。
最后,总结一下八爪鱼里的坑:
云采集不是那么好用的,需要注意规则,尽量别太复杂
云采集是多ip多节点处理的,所以尽量别采集需要登录的网站,那是作死
如果没有ajax加载的页面,尽量勾选优化非ajax页面速度选项
单机测试一下,如果可以的话就不加载图片来采集
cookies有很多网站是有效时间并不长,所以别期待cookies可以一直使用
网速和计算机响应速度很大程度决定了单机采集的速度
云采集会漏数据的,精度要求高的话,尽量规则上做完善,比如加入加载失败的重试或者判断是否出现数据的流程
热门网站比如淘宝、阿里巴巴、企查查、天眼查等,基本上对云采集的ip都屏蔽了,别想那么容易……
单机采集可以使用网上的vps服务器,便宜的大概1天1块钱,好点的还能自动切换ip,小规模使用应该能解决不少问题
给页面留一些加载时间,或者循环延迟1秒,别让请求速度太快,容易漏数据
八爪鱼数据是没有计算功能的,所以只能采集和判断
学好Xpath,否则你就是从入门到放弃!