首页
学习
活动
专区
工具
TVP
发布

十年python大牛解析反反爬虫,高效爬取,再也不怕网站反爬虫策略

1.Headers限制

这应该是最常见的,最基本的反爬虫手段,主要是初步判断你是否是真实的浏览器在操作。

这个一般很好解决,把浏览器中的Headers信息复制上去就OK了。

值得注意的是,很多网站只需要userAgent信息就可以通过,但是有的网站还需要验证一些其他的信息,比如知乎,有一些页面还需要 authorization 的信息。所以需要加哪些Headers,还需要尝试,可能还需要Referer、Accept-encoding等信息。python有趣吗?好玩吗?想学吗?这里小编创建了一个python学习交流群:308754087 里面也会不定时分享关于Python的免费学习资料,欢迎想学习的小伙伴的加入,python有你更精彩!!嘿嘿!

3.动态加载

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

在遇到动态加载的网页的时候就需要去分析ajax请求,一般情况都能直接找到包含我们想要数据的json文件。

如果网站给文件加密,那么可以通过selenium+phantomJS框架,调用浏览器内核,并利用phantomJS执行js来模拟人为操作以及触发页面中的js脚本。理论上selenium是比较全能的爬虫方案,因为这个确实算是真实的用户行为。除非网站的反爬虫严苛到宁愿误杀的地步。

4.验证码

我们在很多网站会遇到,如果请求量大了之后就会遇到验证码的情况。最让人诟病的12306,其实也是一定程度上的防止非正当请求的产生。

对于验证码,可以通过OCR来识别图片,Github上面有很多大神分享的代码可以用,可以去看看。

5.减少返回的信息

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

6.返回伪造的信息

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180105A0KZY300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券