爬虫咋用代理ip( 二 )
而假如用户对于代理IP不放心,可是又必须用到换IP,那麼实际上大家可以先对IP代理做一个了解。那就选择苹果ip吧。
【爬虫咋用代理ip】 苹果ip自建服务器强大技术支持,高性能服务器,获取数据更加迅速,效率翻倍,海量IP资源,高速,高匿,稳定,一键秒连 ,有专业的团队、优质的售后,还在等什么,快来抢购吧!
■网友
这个挺好用的 主要是便宜
豌豆代理 - 一款互联网大数据代理IP营销软件
■网友
不同的语言不一样,可以参考下面的文章,
企业级分布式爬虫用代理IP抓数据思路架构与实现_企业级爬虫IP代理_百变IP企业级分布式爬虫使用代理IP抓数据思路架构与实现_百变IP大家在使用分布式爬虫,或者叫多进程爬虫的时候,由于目标站的限制,可能会用到代理IP。
如何才能资源利用最优化、最合理的使用代理IP来抓数据,下面的文章可以提供一些思路,这也是百变IP官网建议的实现方式。
一般大家都会有下面几种实现方式:
极度不推荐:【方案一】每个进程从接口API中随机取一个IP列表来循环使用,失败则再调用API获取,大概逻辑如下:
step1:每个进程(或线程),从接口随机取回一批IP回来,循环尝试IP列表去抓取数据;
step2:如果访问成功,则继续抓下一条
step3:如果失败了(比如超时、出现验证码等),再从接口取一批IP,继续尝试。
方案一是最错误且最低效的办法,原因如下:
1、我们知道每个IP都是有有效期的,当你取回来一个列表的时候,比如列表里面第一个IP有效期100秒,第二个有效期80秒,第三个110秒,第四个50秒,当你尝试第一个的时候比如一直成功用了50秒,然后被封,要换IP了,继续尝试第二个,这时候第二个有效期已经还剩余30秒了,第四个已经过期了。如果你设置HTTP请求的时候连接时间超时为3秒,读取时间超时为5秒,那你将会有可能浪费3-8秒的时间,说不定这3-8秒已经可以抓取几十次了。
不推荐但也能跑:【方案二】每个进程从接口API中随机取一个IP来使用,失败则再调用API获取,大概逻辑如下:
step1:每个进程(或线程),从接口随机取回一个IP来,用这个IP去访问资源,
step2:如果访问成功,则继续抓下一条
step3:如果失败了(比如超时、出现验证码等),再从接口随机取一个IP,继续尝试。
方案二弊端:
A、压力和效率:API调取十分频繁,会对百变IP的接口造成压力,另外你调用的时候也会耗时比如每次耗时100ms,浪费时间,压力这个目前还好,我们的API直接用Nginx读取Redis,接口性能没有问题。PS:不过还是建议弄一个脚本每秒请求一次接口,把IP读到本地存到数据库或者Redis,然后其他进程从本地随机取一个IP,这样效率高(这样做要注意实时剔除不可用的IP,即本地有,接口未返回的要删除)。
B、资源竞争:比如你15个进程同时随机去取,例如我们IP池同时有30个可用,因为是随机取一个,所以不能保证两个或多个进程不取到同一个IP,这样频率高了,对方就有可能封这个IP。倒是可以调用接口的去重功能。
C、遇到被封的IP,你也无法告诉API,下次不会给你返回被封IP了。当前API去重只能保证每天不重复。隔天是有可能重复的,因为有些IP当天被封,隔天说不定就可以用了,这些阈值还是使用方自己控制比较好。
所以,尽可能做个策略,尽可能让每个进程(或线程)使用一个IP,不要多个进程使用一个IP。
推荐:【方案三】先导入数据库,从数据库里面取IP,大概逻辑如下:
step1:在数据库里面建一个表,写一个导入脚本,每分钟请求60次API,把IP列表导入到数据库里面(接口返回的是实时可用的,百变IP会实时检测,你的检查肯定没有我们这边实时,如果接口里面没有而数据库里面有,则删除或者标记为不可用,反之则插入或者更新。)。
推荐阅读
- python 爬虫,咋获得输入验证码之后的搜索结果
- 电视盒子能用代理吗
- 同一款手游为啥会有多家代理
- 网游职业玩家咋赚钱的
- 1、相同的网址,为啥浏览器http和https都能登录,而爬虫不行\n2、网页下载内容不全
- 现在想进入智能家居行业,看了很多家,想做代理,希望得到有用的建议和意见,有行业内的内加微信聊聊吗
- 智能家居加盟店咋加入
- 微信公共账号到底咋用
- 咋用c语言或java打点出函数图
- 投资30万以内,适合二三线城市加盟或代理的项目有哪些
