转自:http://www.bazhuayu.com/blog/wysjcjnd
摘要:随着网页制作,网站技术的发展,ajax,html5,css3等新技术层出不穷,这给网页数据采集工作造成了很大的困难,让我们一起看看常见的网页数据采集都有哪些难点吧。
1. 网页结构复杂多变
网页本身是基于html这种松散的规范来建立的,而且经历了各大浏览器混战的时代,各个IT巨头都有自己的标准,并且互相不兼容,这就导致了网页结构非常复杂多变,专业的来讲,网页属于半结构化数据,也就是说他不是结构化的,而网页数据采集本身是一件由计算机来完成的工作,众所周知计算机最擅长干的就是重复性的工作,也就是说必须要有严格的规律的事情,所以网页结构多变就意味着,网页采集工具要做得好就必须能适应变化。这一点,说起来简单,实现起来确实非常之难。八爪鱼采集器利用一种非常简单的原理实现了这一点:自定义流程。我们认为只有把做一件事情的整个过程自定义化,才可以说这个软件能适应变化,因为根据不同情况,需要做不同的处理,不同的流程就是不同的处理。但是光有自定义流程还不够。要想真正适应变化,还需要组合出来的流程能处理各种情况,网页是给人看的,所以,只要每个流程步骤能模拟人的一种操作,将人上网时的各个操作步骤根据情况组合,便能在电脑中模拟出人操纵网页的情况。八爪鱼采集器兼顾计算机和人处理网页数据的特征,能够应对网页结构的复杂多变。
2. 网页数据格式多样
网页上显示的内容,除了有用的数据外,还有各种无效信息,广告,链接等等,就算是有效的信息,也有各种显示方式,列表,表格,自定义结构,列表-详情页,分页显示,甚至鼠标点击显示,鼠标滑过显示,输入验证码显示,等等,网页上出现的数据格式的多样化,也是个难点。所以要做到都能处理,提取数据的逻辑就必须很智能,而且对提取到的数据也要能进行一定的加工处理。
3. 数据采用ajax异步加载
异步加载,也叫ajax,是一种使用脚本,不重新加载整个页面,而更新部分页面数据的技术。这是目前几乎所有采集器的致命障碍。因为现在几乎所有的采集器都采用post模式,就是向web服务器发送请求,获取响应的字符串,然后分析字符串,从中截取数据。ajax会导致获取的字符串中根本就没有数据,只有脚本程序,数据是在脚本执行的时候加载的。对于post采集器而言,这是个不可逾越的障碍,因为先天原理不足以方便处理这种情况。针对这种问题,使用八爪鱼采集器就可以处理,因为八爪鱼采集器是模拟人的操作的,没有post,也没有分析字符串,只是模拟人操作网页的行为,不论网页后台采取什么方式加载数据,在数据显示到网页上的时候,八爪鱼采集器就能以可视化的方式提取到了数据。所以能轻松应对ajax加载的数据。一句话,只要你能打开一个网站并看到数据,使用八爪鱼采集器就可以抓取到这个数据。
4. 网站访问频率限制
现在几乎所有的网页数据采集工具都是单机程序,也就是说,他能利用的最大的资源就是单一电脑的所有资源,例如内存,cpu, 带宽等,在处理网页较少的时候这没问题,但是如果要采集大量网页,就不得不采取多线程等技术来加快访问网页的速度,当然对方网站一般都有一些安全措施,确保单个IP,也就是单个电脑不能访问太快,否则会造成太大的压力。当访问速度太快的时候,一般会*该IP,限制其继续访问,这样采集就中断了。八爪鱼采集器采用云采集,每台云采集服务器访问该网站的频率都不会太快,这就不会被*IP,而且八爪鱼采集器的云服务器有很多台,他们协同工作,就相当于有很多台电脑访问,所以总体的速度很快,这就达到了一个平衡点,既没有一台电脑访问一个网站频繁太高而被*IP的风险,也没有因此降低整体的采集速度,真正做到两全其美。
5. 网站访问不稳定
网络不稳定,这种现象非常普遍,网站也会不稳定,如果网站在一个时间访问压力过大,或者服务器出现问题,就可能不会正常响应用户查看网页的需求,对于人来说,偶尔出错不会有大问题,重新打开网页或者等待一段时间即可,然后对于网页数据采集工具而言,出现意外情况就比较麻烦,因为无论出现任何状况,人都会根据情况想出应对策略,但是程序只能按照既定的逻辑运行,一旦出现意外情况,很有可能因为不知道如何处理而崩溃或者逻辑中断。为了应对这些情况,八爪鱼采集器内置了一整套逻辑判断的方案,可以让用户自定义网站访问不稳定时候出现的各种情况该如何应对,因此,当网站出错的时候,八爪鱼采集器可以做到等待,重试,也可以做到采集其他任何用户定义的流程逻辑,比如跳过,后退再刷新等等,甚至重新打开登陆页面,重新登录等等,用户可以自定义判断条件和处理流程,所以可以处理各种不稳定的情况。
6. 防采集措施
除了上面这些难点之外,有些网站为了屏蔽某些恶意采集,复制内容,不尊重版权的做法,而采取了一些技术手段来防止别人采集,比如,验证码,点击显示数据,等等可以鉴别人和机器的措施,这在一定程度上阻止了恶意采集行为,但是也给正常的浏览和采集带来障碍。八爪鱼采集器内置了一些功能,比如识别验证码,点击元素等可以帮助用户突破这些限制。但是八爪鱼团队一直倡导的是在获取授权的情况下采集数据,也就是说,如果你需要采集一个网站的数据,那么你应该先跟网站管理员沟通,告知对方你采集的数据,采集的目的等等,经过对手同意并授权采集后,才开始采集,八爪鱼采集器虽然提供了很多技术支持,让网页数据采集变得容易,但是并不支持非法采集,特别是以恶意复制内容为唯一目的的采集,希望大家一起维护互联网规范,共同建设美好互联网环境。
本文为网页数据采集系列原创文章第五篇,网页数据采集系列将对网页数据采集这一话题做全面深入的探讨,欢迎各位一起探讨,互相学习。
讨论请加群:网页数据采集,群号:254764602,加群暗号:网页数据采集
本文于2013年11月9日首发于“八爪鱼采集器”,转载请注明出处。