爬虫时的IP限制,是我们通常会遇到的问题,如果想要真正精通爬虫,懂得如何破解反爬虫,是一门必修课程。代理IP能够解决掉很多时候遇到的IP问题,但是不同网站的反爬虫应该策略有不一样,我们要机智应对。
1、调用time.sleep()函数破解间隔时间限制
通常对于某些网站,在我们发送请求后,因为访问速度过快,网页会很快发现我们的IP地址在一段时间内,多次像页面发送请求。对于一般的网站,它的反爬技术很可能就是利用公式计算某一IP地址在一段时间内发送请求的次数,因为一个正常人,在一定时间的请求都是有限的。
所以,对于这种情况,我们可以简单的尝试在爬虫的过程中,对我们的程序进行适当的延时,调用time.sleep()函数。这样既不会过快的访问网页,对对方的服务器产生严重的垃圾和负担,也可以防止程序被迫中止。
举一个例子就是,当初我们尝试封锁IP破解的时候,找到了一个免费代理IP的地址,于是我就要想办法批量的把IP地址爬下来,然后在进行测试,因为免费的代理IP大都性能不好或者已经不能用了。这个时候当我第一次爬的时候,没有爬完一页程序就被迫中止了,(因为返回的页面内容变了),我就知道遇到了反爬,那么我首先尝试的就是利用时间延时,方法就是调用time.sleep()函数,并把延迟时间定为3s,没想到程序就顺利运行了,成功的爬了10页的代理IP地址。
所以在遇到反爬时,如果你觉得你访问的页面是一般网站,不是那种存着比较重要信息的网站,可以首先尝试利用时间延时。
2、使用代理IP破解IP限制
对于一些保存重要信息的网站,它的反爬技术会比较严密,它会严苛检查每一个IP的请求操作,然后对于可能是异常的请求,返回某一页面给对应请求或是提示需要登录信息等等甚至可能把相应的IP拉入黑名单。
这个时候我们可能就需要代理IP来隐藏我们的身份,以及通过更换IP来达到不断爬取数据的目的。
那么这些代理IP要从哪儿获取呢?如果你百度,其实会有蛮多免费代理IP的网站,里面会有很多的代理IP,但是不要太开心,因为这里的代理IP大都不稳定甚至失效(不然为什么那么多都要钱呢),所以当你批量爬下来代理IP后,还需要再单独写一个程序,去利用每一个IP请求一个一定有的网站,例如百度,如果这个IP的requests.get(‘http://www.baidu.com‘, proxies = proxy)(这里的proxy就是你的IP地址)访问成功了,才能说明这个IP是可用的。
当然,如果有成本,可以尝试使用付费代理IP,因为这样获得的IP会稳定很多,比如使用极光代理,可用的IP数量多,质量也好,当然会节省很多时间,还能提高爬虫的效率。
如果你是要爬一些比较大型的网站,那么最好要研究下它的反爬机制,因为越是大型的网站,对自己的保护就越高级。
相关文章内容简介
1 机智应对爬虫时的IP限制
爬虫时的IP限制,是我们通常会遇到的问题,如果想要真正精通爬虫,懂得如何破解反爬虫,是一门必修课程。代理IP能够解决掉很多时候遇到的IP问题,但是不同网站的反爬虫应该策略有不一样,我们要机智应对。 1、调用time.sleep()函数破解间隔时间限制 通常对于某些网站,在我们发送请求后,因为访问速度过快,网页会很快发现我们的IP地址在一... [阅读全文]
最新标签
推荐阅读
热门文章
在线咨询
客户经理
公众号
关注公众号,免费领试用
大客户