Python代理IP的使用和代理池的设置
熟悉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即可
import requests
proxies = {
'',
'',
res = requests.get(")
print(res.json())
返回内容如下
"ip": "203.160.80.166",
"city": "Hong Kong",
"region": "Central and Western",
"country": "HK",
"loc": "22.2783,114.1747",
"org": "AS10099 China Unicom Global",
"timezone": "Asia/Hong_Kong",
"readme": ""
四、代理池的设置
代理池就是将代理服务器的IP存储到临时数据库中,实现随用随取代理设置 。既可以将免费的代理网站的IP及时存进去,也可以避免了收费代理api的请求限制。
1.如何设计代理池
代理池一般分为三个部分:收集代理,存储代理和使用代理,从收集到存储或者是从存储到使用,期间可以对使用的代理做检测,本文暂不提及代理设置 。
收集代理:就是指从指定的目标源获取到代理服务器的IP之后存到历史数据库代理设置 。
存储代理:负责存储从目标网站的代理服务器IP,通常使用redis代理设置 。
使用代理:直接从临时数据库获取提取过来的IP或者以接口的形式返回代理设置 。
2.收集和存储代理
本次使用的是redis的列表(List)对代理进行存储代理设置 ,当然对去重有要求的话可以使用redis的有序集合(sorted set)
在redis数据库中建立一个叫做“Proxy”的list代理设置 ,将获取到的IP进行存储:
import requests
import redis
redisHost = '127.0.0.1'
redisPort = 6379
redisPool = redis.ConnectionPool(host=redisHost, port=redisPort, password='', db=1)
redisCon = redis.Redis(connection_pool=redisPool)
def get_IP():
IpApi = "url"
res = requests.get(IpApi).json()["data"]
for ip in res:
ipInfo = f"']}"
redisCon.rpush("Proxy",ipInfo)
if __name__ == '__main__':
get_IP()
这里使用的是ipidea的代理api代理设置 ,将获取的服务器地址存入了redis的列表中:
3.使用代理
使用代理的话就从redis的Proxy队列代理设置 ,使用redis的pop方法取到服务器IP:
def GetIpFromRedis():
serverIp = redisCon.lpop("Proxy")
print(serverIp.decode())
4.可持续化代理池
为了保证代理池的IP量位置在某一水平,可以使用redis中的llen方法对队列的长度进行检测代理设置 。使用while循环,如果IP量低于一定的阈值就获取代理地址并存储,否则就跳过本次while循环:
def get_IP():
while True:
if redisCon.llen("Proxy") < 100:
IpApi = "url"
res = requests.get(IpApi).json()["data"]
for ip in res:
ipInfo = f"']}"
redisCon.rpush("Proxy",ipInfo)
else:
pass
五、总结
在互联网不断发展,信息数据庞大的今天,python已经取代了过去传统的依靠人力搜集信息的方式,成为了目前最为主流的数据获取方法代理设置 。使用代理IP并不是抓取数据的唯一方法,但它为python带来了诸多好处,是python最可靠的选择。
IPIDEA作为一家全球互联网大数据IP资源服务商代理设置 。目前,已与全球数万家企业达成深度合作,是世界500强公司都在使用的代理网络和数据收集工具。IPIDEA一直致力于连接人与信息,为全球用户提供优质的数据采集解决方案。
爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。