浅析分布式爬虫使用代理IP的几种方案
没有代理IP,爬虫工作将寸步难行,所以很多爬虫工程师都需要去选购高效稳定的代理IP。有了优质代理IP后,是不是就可以高枕无忧了呢?事情没有那么简单,还需要优化方案,合理分配资源,提高工作效率,更高效更快速更稳定的进行爬虫工作。
方案一、每个进程从接口API中随机取一个IP列表(比如一次提取100个IP)来循环使用,失败则再调用API获取,大概逻辑如下:
1、每个进程(或线程),从接口随机取回一批IP回来,循环尝试IP列表去抓取数据;
2、如果访问成功,则继续抓取下一条。
3、如果失败了(比如超时、出现验证码等),再从接口取一批IP,继续尝试。
方案缺点:每个IP都是有有效期的,如果提取了100个,当使用了第10个的时候,可能后面的大部分都失效了。如果你设置HTTP请求的时候连接时间超时为3秒,读取时间超时为5秒,那你将会有可能浪费3-8秒的时间,说不定这3-8秒已经可以抓取几十次了。
方案二:每个进程从接口API中随机取一个IP来使用,失败则再调用API获取一个IP,大概逻辑如下:
1、每个进程(或线程),从接口随机取回一个IP来,用这个IP去访问资源,
2、如果访问成功,则继续抓下一条。
3、如果失败了(比如超时、出现验证码等),再从接口随机取一个IP,继续尝试。
方案缺点:调用API获取IP的行为非常频繁,会对代理服务器造成非常大的压力,影响API接口稳定,可能会被限制提取。这种方案也不适合,不能持久稳定的运行。
方案三:先提取大量IP导入本地数据库,从数据库里面取IP,大概逻辑如下:
1、在数据库里面建一个表,写一个导入脚本,每分钟请求多少次API(咨询代理IP服务商建议),把IP列表导入到数据库里面。
2、在数据库里面记录好 导入时间、IP、Port、过期时间、IP可用状态 等字段;
3、写一个抓取脚本,抓取脚本从数据库里面读取可用IP,每个进程从数据库获取一个IP进行使用。
4、执行抓取,对结果进行判断,处理cookie等,只要出现验证码或者失败就放弃这个IP,重新换一个IP。
这种方案有效的避开了代理服务器资源的消耗,有效的分配代理IP的使用,更加的高效和稳定,保障了爬虫工作的持久性和稳定性。
- 企业级分布式爬虫使用代理IP抓数据思路架构与实现_用百变IP抓数据
- Python3 爬虫使用User Agent和代理IP隐藏身份
- [Python爬虫] 使用urllib2库检测代理ip是否可用,并使用代理提交GET、POST请求
- Python:爬虫使用代理防封IP:HTTP Error 403: Forbidden
- Python 爬虫之使用代理ip
- Python 爬虫入门(二)—— IP代理使用
- 这就是我的爬虫基本功!使用代理 IP和绕过反爬机制!
- python3实现网络爬虫(7)-- 使用ip代理抓取网页
- 鱼c笔记——Python爬虫(三):使用User Agent和代理IP隐藏身份
- 如何使用ip代理爬虫
- 在爬虫使用过程中解决ip被封锁IP限制的几种方法
- 网络爬虫01: Urllib2库使用代理IP
- 爬虫使用代理ip
- python3使用代理ip伪装爬虫访问网站
- Python:爬虫使用代理防封IP:HTTP Error 403: Forbidden
- 使用阻塞队列爬取代理ip实现爬虫
- 第三百四十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过自定义中间件全局随机更换代理IP
- Python3网络爬虫之使用User Agent和代理IP隐藏身份
- 使用python为爬虫获取免费代理ip
- 爬虫使用代理ip后就不会被封禁了吗?