熟悉python的人都知道为了python的正常请求,维持数据的稳定获取,都会用到代理IP。代理IP不仅可以用来规避IP在单位时间的请求次数,还可以借助代理来隐藏真实的IP,避免出现“IP请求过于频繁”,“403”等报错。今天就带大家简单了解一下Python代理IP的使用和代理池怎么设置。

一、什么是代理
代理一般指的是代理服务器Proxy Server,它的作用就是代理网络用户获取信息。就像是一个请求的中转站,代理服务器就是请求端与目标网站之间的一个中转。使用代理之后将不是直接请求目标网站,用户的Request信号会先送到代理服务器,由代理服务器来取回所需要的信息并传送给用户。此时的被请求的目标网站所识别的IP就不是用户真实的本地IP,而是代理IP地址。这就是代理的基本原理。
二、代理的作用
1、突破自身IP访问限制访问其他不能访问的站点。
2、访问一些单位或团体的内部资源,比如教育网的FTP资源。
3、提高访问速度。代理服务器通常有一个较大的硬盘缓冲区,请求信息通过后将会保存在缓冲区内。如果其他的用户访问相同的信息,这时返回的内容将从缓冲区直接返回,提高访问速度。
4、隐藏真实IP,可以利用代理服务器隐藏自己的真实IP信息。
三、 Python requests如何使用代理
python的requests请求设置代理只需要传递一个参数:proxies即可
返回内容如下
四、代理池的设置
代理池就是将代理服务器的IP存储到临时数据库中,实现随用随取。既可以将免费的代理网站的IP及时存进去,也可以避免了收费代理api的请求限制。
1.如何设计代理池
代理池一般分为三个部分:收集代理,存储代理和使用代理,从收集到存储或者是从存储到使用,期间可以对使用的代理做检测,本文暂不提及。
收集代理:就是指从指定的目标源获取到代理服务器的IP之后存到历史数据库。
存储代理:负责存储从目标网站的代理服务器IP,通常使用redis。
使用代理:直接从临时数据库获取提取过来的IP或者以接口的形式返回。
2.收集和存储代理
本次使用的是redis的列表(List)对代理进行存储,当然对去重有要求的话可以使用redis的有序集合(sorted set)
在redis数据库中建立一个叫做“Proxy”的list,将获取到的IP进行存储:
这里使用的是ipidea的代理api,将获取的服务器地址存入了redis的列表中:

3.使用代理
使用代理的话就从redis的Proxy队列,使用redis的pop方法取到服务器IP:
4.可持续化代理池
为了保证代理池的IP量位置在某一水平,可以使用redis中的llen方法对队列的长度进行检测。使用while循环,如果IP量低于一定的阈值就获取代理地址并存储,否则就跳过本次while循环:
五、总结
在互联网不断发展,信息数据庞大的今天,python已经取代了过去传统的依靠人力搜集信息的方式,成为了目前最为主流的数据获取方法。使用代理IP并不是抓取数据的唯一方法,但它为python带来了诸多好处,是python最可靠的选择。
IPIDEA作为一家全球互联网大数据IP资源服务商。目前,已与全球数万家企业达成深度合作,是世界500强公司都在使用的代理网络和数据收集工具。IPIDEA一直致力于连接人与信息,为全球用户提供优质的数据采集解决方案。
