注册
登录
提问时间:2019/2/20 19:39:13    楼主:未知网友   阅读量:308

大数据时代,网络爬虫起着非常巨大的作用。爬虫可以加快获取信息的速度,大大提升工作的效率,并且可以用于多种行业,因此使用爬虫的人比较多。

但爬虫行为会对网站造成一定的压力,甚至被无节制的爬虫行为导致崩溃。网站也不是好欺负的,很多网站设置了比较严格的反爬虫机制,除了验证码限制,还有其他的IP限制,数据伪装,动态加载等等。道高一尺魔高一丈,对于这些反爬虫策略,爬虫怎么应对爬取信息呢?

 一、返回伪造的信息

 这个真的是程序员何苦为难程序员。反爬虫的工程师也是煞费苦心,一方面是不让真实的数据被大规模爬取,另一方面也给你后期的数据处理增加负担。如果数据伪造的好,可能你真的不容易发现自己爬的是假数据,当然只能依靠你后期去清洗这些数据了。

 二、IP限制

限制IP也是很多网站反爬虫的初衷,有些人随便写一个循环,就开始暴力爬取 ,确实会给网站服务器带来很大的负担,而这种频繁的访问,显然也不会是真实用户行为,索性果断把你封掉。

 这种情况,你可以遵守规则,把你爬取的速度变慢,每次爬取停个几秒就行了。如果爬取的数据量不大,其实也浪费不了多少时间,反正你也可以利用这段时间做做其他事情,或者好好思考一下人生。 当然,你也可以通过不断换代理IP的形式来绕过这种限制,站大爷独享IP池短效优质代理IP和一手私密代理IP,爬虫的不二之选,爬到一定的量就切换IP。

三、减少返回的信息

最基本的隐藏真实的数据量,只有不断加载才能刷新信息。还有的就更变态,会只给你展示一部分信息,人都看不到,爬虫也无能为力。比如CNKI,你每次搜索能够得到的内容就是非常有限的。这个貌似没有很好的解决办法,但是这么干的网站毕竟是少数,因为这种方式,其实在某种程度上是牺牲了一部分真实用户的体验。

 四、动态加载

通过异步加载,一方面是为了反爬虫,一方面也可以给网页浏览带来不同的体验,实现更多的功能。很多动态网站都是通过ajax或者JavaScript来加载请求的网页。

在遇到动态加载的网页的时候就需要去分析ajax请求,一般情况都能直接找到包含我们想要数据的json文件。如果网站给文件加密,那么可以通过selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。理论上selenium是比较全能的爬虫方案,因为这个确实算是真实的用户行为。除非网站的反爬虫严苛到宁愿误杀的地步。

许多爬虫工作都要求获取大量的信息,并进行数据分析挖掘,但靠人工速度实在是太慢了,而且大量的数据分析,结果更加可靠,因此各行业都离不开爬虫去爬取数据。面对这些反爬虫策略,爬虫也只能不断的去找突破方法。比如IP限制,就使用代理IP去突破,站大爷HTTP代理可以为爬虫提高海量IP资源去突破。