作者:IPIDEA
2022-09-27 15:07:16
现在网络爬虫非常流行,导致许多网站对爬虫的防御越来越严格。如果你不使用ip代理,有些数据比较大,根本爬不下去。自从有了一个ip代理池后,访问允许访问公开数据就变得简单许多,下面IPIDEA免费介绍一个代理IP池建造教程给大家。
1.取代理json信息
2.分析
显然每一行都是一个json数据,但是你在整个页面上得到的只是一个字符串,每一行的末尾都会换行,也就是说每一行的末尾都有"",所以思路很清晰,用requests整个页面text(字符串),然后使用split()每行分割后组成的列表,便于此列表使用json.loads()方法,将每行的字符串转换为json对象,最后取值。
3.代码部分
#!/usr/bin/envpython3
#coding:utf-8
#lanxing
importjson
importtelnetlib
importrequests
importrandom
proxy_url=https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list
#proxyList=[]
#定义函数,验证ip代理是否有效
defverify(ip,port,type):
proxies={}
try:
telnet=telnetlib.Telnet(ip,port=port,timeout=3)#用这个ip请访问,3s自动断开,返回tiemout
except:
print(unconnected)
else:
#print(connectedsuccessfully)
#proxyList.append((ip+:+str(port),type))
proxies[type]=type
proxies[host]=ip
proxies[port]=port
proxiesJson=json.dumps(proxies)
##保存到本地proxies_ip.json文件
withopen(proxies_ip.json,a+)asf:
f.write(proxiesJson+)
print("已写入:%s"%proxies)
#定义函数,带着url获取数据的地址
defgetProxy(proxy_url):
response=requests.get(proxy_url)
#print(type(response))
#用split()每行分割后形成的列表,以消除换行的影响
proxies_list=response.text.split()
forproxy_strinproxies_list:
#用json.loads()方法,将每行的字符串转换为json对象,最后取值
proxy_json=json.loads(proxy_str)
host=proxy_json[host]
port=proxy_json[port]
type=proxy_json[type]
verify(host,port,type)
#主函数,入口
if__name__==__main__:
getProxy(proxy_url)
关于ip对于代理池的建设,您还可以在网络上找到许多相关教程。如果你想简单一点,你可以直接从可靠的代理服务提供商那里购买ip代理使用,这样IP质量更高,也更安全。