国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内IP代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
当代理IP遇到JSON:搞数据必须会的三板斧
爬数据的老司机都知道,代理ip和JSON这对组合就像豆浆配油条。拿ipipgo的全球住宅IP来说,每次请求回来的数据十有八九都是JSON格式。要是不会玩转Python的JSON解析,就像拿着金饭碗要饭——白瞎了好工具。

实战第一招:扒开API的包装纸
举个真实场景:用ipipgo的API获取代理列表时,返回的JSON可能长这样:
{
"proxies": [
{"ip":"203.0.113.1", "port":8080, "protocol":"socks5"},
{"ip":"198.51.100.3", "port":8888, "protocol":"HTTPs"}
],
"expiry": "2024-03-15T12:00:00Z"
}
新手常犯的错是直接json.loads()一把梭。老司机都知道要加异常处理:
import json
from ipipgo import get_proxies 假设这是ipipgo的SDK
try:
raw_data = get_proxies()
proxy_list = json.loads(raw_data)['proxies']
print([f"{p['protocol']}://{p['ip']}:{p['port']}" for p in proxy_list])
except json.JSONDecodeError as e:
print("数据格式翻车了:", e)
except KeyError:
print("接口返回结构有变!")
第二式:把配置变成活字典
用ipipgo的动态住宅IP时,经常需要动态加载配置。把JSON配置文件玩出花:
| 字段 | 说明 |
|---|---|
| rotation_interval | IP切换间隔(秒) |
| geo_restriction | 地域限制列表 |
| protocol_preference | 协议优先级 |
用json.dumps()做配置持久化时,记得加参数:
config = {
"rotation_interval": 300,
"geo_restriction": ["US", "JP"],
"protocol_preference": ["Socks5", "http"]
}
with open('ipipgo_config.json', 'w') as f:
json.dump(config, f, indent=2, ensure_ascii=False) 保持中文不乱码
第三板斧:异常处理防翻车
遇到过凌晨三点被JSON解析异常搞崩脚本吗?这几个坑一定要躲:
- 接口返回非标准JSON(比如ipipgo的极速模式可能返回压缩数据)
- 字段类型突变(字符串变数字)
- 嵌套数据像俄罗斯套娃(比如多层代理配置)
推荐用json.JSONDecoder的object_hook参数做数据消毒:
def validate_proxy(data):
if not isinstance(data.get('port'), int):
data['port'] = int(data['port'])
return data
raw_json = '{"proxy": {"ip":"203.0.113.5", "port":"3128"}}'
parsed = json.loads(raw_json, object_hook=validate_proxy)
print(parsed['proxy']['port']) 输出int型3128
QA时间:避坑指南
Q:解析ipipgo的返回数据时总报编码错误?
A:八成是响应头没声明编码,用response.content.decode('utf-8')比response.text更靠谱
Q:遇到多层嵌套的代理配置怎么办?
A:祭出jsonpath-ng库,像XPath一样定位数据:
from jsonpath_ng import parse
expr = parse('$.proxies[].ip')
[ match.value for match in expr.find(data) ]
Q:需要处理GBK编码的旧数据怎么办?
A:给loads加参数:
json.loads(gbk_str.decode('gbk'), encoding='gbk')
最后提一嘴,选代理服务商就像选菜刀——锋利(IP质量)和顺手(接口规范)最重要。像ipipgo这种返回标准JSON格式、带完整错误码的服务,能省掉一半解析的麻烦活。特别是他们的住宅IP资源,做需要高匿名的场景时,JSON里带的协议信息直接能用,不用自己瞎折腾。
国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内ip代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)
















发表评论
发表评论: