一些令你瞠目结舌的爬虫技巧

放飞梦想 1497 次 PHP新手2016-02-17 大 中 小


众所周知,爬虫很容易遇到被封IP的情况,最近国外一家公司做过一件很有意思的事情,跟大家一起分享分享。对于IP被封,大多数情况下是可以换代理来解决的。于是这家公司做了两件事情:

 

第一,开发了一款软件,包括Android/iOS/WP/OS X/Windows/Linux全平台支持,使用这个软件就可以FQ出去了(不只是中国有FQ的需求哟,也不只是有墙的时候才需要翻),但是你免费使用他的FQ服务的同时,需要接受一条协议:将自己的终端作为这个系统代理出墙的一个节点。

第二,一套动态分配代理IP的系统。主要是对于爬虫,需要使用代理IP的时候,只需要设置一个特定的proxy,连接到他们的系统之后,会自动从目前活跃的终端节点中挑选一个代理你的请求,你不需要一直切换代理,却可以每次请求使用不一样的出口IP。

这个系统大概有2000多万用户使用代理服务,意味着有2000万IP代理可用,基本上可以解决大多数IP被封的问题了。而第二步中的服务,价格是500美元每月(不限时间,限制流量),而且在称为付费用户之前,还得经过一次Skype的面试。

这算是一个不错的爬虫技巧了,不但解决了代理不够的难题,还为他人爬虫问题提供了简单粗暴的解决方案,总之钱能够解决的问题就是小问题。后来,这家公司自己不再抓取数据了,改为出售代理IP,活得非常滋润。

 

 

听知乎的朋友说过,当时爬一个网站的时候需要大量代理,正好手上有不少PHP的虚拟空间,就是万网卖的那种,几十块钱一年,只能上传PHP代码。就用PHP写了一个代理脚本,应该算应用层代理了吧,还加了双向接口验证,伪装成普通文件,瞬间有了几十个代理,一直在用,这个代理好像也不可追踪。

其实非常简单,把url用GET 或者POST提交给PHP脚本,脚本用file_put_contents(url)获取数据,然后把数据返回给你就行了。

 


还有一个知乎的朋友最近在学go,随手用go写了个小爬虫,从入口页开始解析并找到站内地址,然后开个goroutine去爬,对,没有控制线程数。用的公司的代理出口,然后顺手用hduoj做测试,结果瞬间把它爬挂了…

 

说一个只有在大规模爬取的时候才用得到的技巧吧.
比如你在建立一个汽车数据库, 需要从上百万各种来源爬一大堆元数据, 肯定不能靠人了, 训练一个模型也太花时间.

有一种简单可行的办法, 首先去google或者垂直网站抓元数据
想办法将元数据与它来源的url配对 (比如google肯定会有来源url)
这样对于一个url, 你能知道它的提取结果是什么, 然后能找到对应页面什么位置
然后逆向出页面模板

因为这些页面都是模板生成的, 于是对整站套用模板, ok, 数据出来了.

 

 

刚开始写爬虫用的是urllib2,后来知道了requests,惊为天人。
刚开始解析网页用的是re,后来知道了BeautifulSoup,解析页面不能再轻松。
再后来看别人的爬虫,知道了scrapy,被这个框架惊艳到了。
之后遇到了一些有验证码的网站,于是知道了PIL。但后来知道了opencv,pybrain。当在爬虫中用上人工神经网络识别出验证码,兴奋得守在爬虫旁边看他爬完全站。
再后来知道了threading,知道了celery。

不断的学习,不断的接触和知道更多的东西,爬虫与反爬虫的对抗会一直进行下去。

转载于:https://www.cnblogs.com/SZLLQ2000/p/5199893.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值