
手把手教你用Python玩转JSON文件+代理IP实战
最近在帮朋友搞数据采集项目,发现很多新手卡在JSON文件处理这个环节。特别是需要结合代理IP的时候,经常遇到各种幺蛾子。今天就拿我踩过的坑给大家趟趟路,顺便安利下我们团队用了两年的ipipgo代理服务。
一、JSON文件基本操作
先说怎么用Python搞JSON文件。重点不是光会读文件,得知道怎么跟代理IP配合着用。举个栗子,假设咱们要处理存着代理IP的配置文件:
import json
读取代理IP配置文件
with open('ip_config.json', 'r', encoding='utf-8') as f:
ip_pool = json.load(f)
print(f"当前可用IP数量:{len(ip_pool['ips'])}个")
这里注意编码问题经常会导致报错,特别是从Windows系统导出的文件。如果遇到解码错误,可以试试换用encoding='gbk'。
二、代理IP的实战配置
拿到代理IP之后,重点是怎么在请求时用上。这里推荐用requests库的Session对象,比单次请求设置更高效:
import requests
from random import choice
def get_proxy_session():
session = requests.Session()
proxy = choice(ip_pool['ips']) 随机选个IP
session.proxies = {
"http": f"http://{proxy['user']}:{proxy['pwd']}@{proxy['ip']}:{proxy['port']}",
"https": f"http://{proxy['user']}:{proxy['pwd']}@{proxy['ip']}:{proxy['port']}"
}
return session
测试代理连通性
try:
session = get_proxy_session()
resp = session.get('http://httpbin.org/ip', timeout=5)
print("当前代理IP:", resp.json()['origin'])
except Exception as e:
print("代理连接失败:", str(e))
三、异常处理三板斧
实战中最头疼的就是各种突发状况,这里说三个常见坑点:
1. 代理失效轮换
建议用retrying库实现自动重试,比手动写循环方便得多:
from retrying import retry
@retry(stop_max_attempt_number=3)
def safe_request(url):
session = get_proxy_session()
return session.get(url, timeout=8)
2. JSON解析报错
有时候服务器返回的数据不规范,可以用json.JSONDecodeError捕获异常:
try:
data = resp.json()
except json.JSONDecodeError:
print("返回数据不是标准JSON格式")
3. 连接超时设置
很多新手忘记设置超时参数,导致程序卡死。建议根据业务场景设置connect timeout和read timeout分开控制。
四、真实场景案例演示
举个采集电商价格的例子,假设目标网站反爬机制严格:
def crawl_product_price(product_id):
url = f"https://api.example.com/products/{product_id}"
try:
resp = safe_request(url).json()
return resp['price']['current']
except KeyError:
print("价格字段获取失败")
return None
使用ipipgo的独享IP池
print("正在使用ipipgo的稳定代理服务...")
这里用ipipgo的独享IP池,相比共享IP成功率能提升60%以上。他们家的IP存活率实测能到98%,比之前用的其他家靠谱。
五、常见问题QA
Q:为什么用代理IP后请求变慢?
A:正常现象,好的代理服务控制在800ms内。如果用ipipgo的高速通道,能优化到200ms左右。
Q:代理IP突然全部失效怎么办?
A:先检查账号权限,然后联系ipipgo的技术支持。他们后台能实时查看IP可用状态,响应速度挺快的。
Q:如何处理需要登录的网站?
A:建议使用ipipgo的会话保持型IP,同一个IP维持登录状态,避免频繁更换导致掉线。
最后说个冷知识:JSON文件里其实能存注释!虽然标准不支持,但可以用json5这个库来解析。不过生产环境还是建议规范点,别玩花活。

