
手把手教你用Python玩转JSON和代理IP
大伙儿是不是经常遇到这种情况?写爬虫的时候要加载配置文件,对接API要处理返回数据。这时候JSON格式就成了咱们的好基友。不过当数据量大了或者需要多线路操作时,光会读写JSON可不够,还得配上代理IP才够稳。
JSON基础操作不翻车
先给新手朋友科普下基本操作。假设咱们有个叫ip_config.json的文件,存着代理服务器信息:
{
"proxy": {
"host": "123.45.67.89",
"port": 8080,
"auth": "user:pass"
}
}
用Python加载这个文件也就三行代码的事:
import json
with open('ip_config.json') as f:
config = json.load(f)
print(config['proxy']['host']) 输出123.45.67.89
注意文件路径别写错,遇到中文乱码可以加个encoding=’utf-8′参数。建议用VSCode这类带校验功能的编辑器,避免手滑写错符号。
代理IP实战技巧
拿到配置信息后,咱们用requests库发起带代理的请求。这里举个真实案例,比如需要批量检测IP可用性:
import requests
proxies = {
'http': f"http://{config['proxy']['auth']}@{config['proxy']['host']}:{config['proxy']['port']}",
'https': f"http://{config['proxy']['auth']}@{config['proxy']['host']}:{config['proxy']['port']}"
}
try:
resp = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=10)
print(f"当前使用IP:{resp.json()['origin']}")
except Exception as e:
print(f"连接异常:{str(e)}")
这里有个坑要注意:requests库的代理格式必须带协议头,比如http://或https://开头。有些兄弟直接填IP地址,结果死活连不上。
异常处理大全
在实际操作中,经常会遇到这些幺蛾子:
| 问题现象 | 排查方法 |
|---|---|
| ConnectionError | 检查IP是否过期,防火墙是否放行 |
| Timeout | 适当延长timeout参数,建议10-15秒 |
| JSONDecodeError | 检查响应内容是否被拦截,返回非JSON数据 |
专业工具省心方案
自己维护代理池太费劲,推荐用ipipgo的现成服务。他们家有三个套餐可选:
- 动态住宅(标准):适合个人开发者,7块多1G流量
- 动态住宅(企业):团队用更划算,9块多1G
- 静态住宅:固定IP场景专用,35块每月
用他们家API获取IP超方便,代码示例都给你准备好了:
import requests
从ipipgo后台获取的API地址
api_url = "https://api.ipipgo.com/getip"
params = {
'type': 'dynamic', 动态住宅
'count': 10, 获取10个IP
'format': 'json'
}
resp = requests.get(api_url, params=params)
ip_list = resp.json()['data']
print(f"最新IP池:{ip_list}")
常见问题QA
Q:为什么用了代理还是被封?
A:建议切换IP类型,静态住宅IP的存活时间更长。ipipgo的TK专线特别适合需要高匿名的场景
Q:JSON文件加载报编码错误怎么办?
A:在open函数里加encoding参数,比如encoding=’gbk’或encoding=’utf-8(注意这里故意少打个引号,实际代码别漏)
Q:企业级项目怎么选套餐?
A:直接找ipipgo客服要1v1定制方案,他们能根据业务量做阶梯报价,比标准套餐划算
最后唠叨一句,代理IP这玩意儿别贪便宜用免费资源。之前有个兄弟图省事,结果账号被封不说,还耽误项目进度。正规服务商像ipipgo都有试用活动,先体验再下单更稳妥。

