爬虫进阶应该怎么做?通常所谓的进阶有以下几种:
分布式
通常会有一些教材告诉你,为了爬取效率,需要把爬虫分布式部署到多台机器上。这完全是骗人的。分布式唯一的作用是:防止对方封IP。封IP是终极手段,效果非常好,当然,误伤起用户也是非常爽的。
模拟JavaScript
有些教程会说,模拟javascript,抓取动态网页,是进阶技巧。但是其实这只是个很简单的功能。因为,如果对方没有反爬虫,你完全可以直接抓ajax本身,而无需关心js怎么处理的。如果对方有反爬虫,那么javascript必然十分复杂,重点在于分析,而不仅仅是简单的模拟。
换句话说:这应该是基本功。
PhantomJs
这个是一个极端的例子。这个东西本意是用来做自动测试的,结果因为效果很好,很多人拿来做爬虫。但是这个东西有个硬伤,就是:效率。
对一个网站定向抓取几十万张页面一般只用解决访问频率限制问题就好了。对机器内存,硬盘空间,URL去重,网络性能,抓取间隙时间调优一般都不会在意。如果要设计一个单台每天抓取上百万张网页,共有一亿张页面的网站时,访问频率限制问题就不是最棘手的问题了,上述每一项都要很好解决才行。硬盘存储,内存,网络性能等问题我们一项项来拆解。
“爬”,本身就是一种对抗行为。 要尽量隐匿自己的行为,方法论很多不细讲了,没有屠龙之技。 最重要的是不能影响对方运维的 KPI ,不能严重到对方研发介入。码农都是混口饭过日子的,都不容易,逼的对方加班升级加策略的最终码农和产品经理去PK 直接就把功能下线了。
现在市场上领先的采集器全都是内置浏览器的,比如八爪鱼采集器,内置浏览器几乎可以模拟用户的所有行为,包括移动鼠标,点击鼠标,翻页,点击链接,滚动鼠标滚轮,切换下拉菜单,输入文字,自动识别验证码(人工打码+机器识别),甚至看到不同的页面还能采取不同的处理流程,云采集还有成千上万的IP实时切换。
限制IP也是很多网站反爬虫的初衷,有些人随便写一个循环,就开始暴力爬取 ,确实会给网站服务器带来很大的负担,而这种频繁的访问,显然也不会是真实用户行为,索性果断把你封掉。这种情况,你可以遵守规则,把你爬取的速度变慢,每次爬取停个几秒就行了。如果爬取的数据量不大,其实也浪费不了多少时间,反正你也可以利用这段时间做做其他事情,或者好好思考一下人生。
欢迎您登录红帽社区,如您还没有账号,请点此注 册
欢迎您注册红帽社区会员,如您已拥有账号,请点此 登 录
不知道你有什么得意的,大家都是混饭吃,何苦欺人太甚,真得罪了大牛,你的苦逼日子也来了。话说回来,是什么经历让你如此阴险,亦或是天生本性如此,现实中有朋友吗,大家是不是整天都要提防着你。做人留一线,日后好相见,堵死别人的路,最后发现自己没了路
展开阅读全文 ∨
收起 ∧