
Prácticas con Python para procesar datos JSON de IPs proxy
Hacemos recolección de datos a menudo tienen que lidiar con proxy IP, hoy tomar la escena real para decir cómo utilizar Python para hacer frente a proxy IP proveedor de servicios devueltos datos JSON. Por ejemplo, supongamos que extraemos un lote de IPs proxy de ipipgo y los devolvemos en este formato:
{
"código": 200
"data": [
{"ip": "1.1.1.1", "port": 8000, "expire_time": "2024-01-01 12:00:00"}, {"ip": "2.2.2.2", "port": 8080, "expire_time": 2024-01-01 12:05:00"}, [
{"ip": "2.2.2.2", "puerto": 8080, "expire_time": "2024-01-01 12:05:00"}
]
}
Análisis básico de los tres ejes
Empiece por enseñar a los novatos tres acciones imprescindibles:
importar json
Asumiendo que la respuesta son los datos brutos devueltos por ipipgo
datos_brutos = respuesta.texto
El primer estilo: al diccionario
proxy_dict = json.loads(datos_brutos)
Segundo: toma la lista de IP
ip_list = proxy_dict['datos']
Tercer estilo: procesamiento transversal
para proxy en ip_list.
print(f "Proxies disponibles: {proxy['ip']}:{proxy['puerto']}")
Tenga cuidado con los baches que puede encontrar aquí:Asegúrese de que el campo de código es 200Si no es así, es que hay algo que no funciona. Sugiera que se añada una sentencia:
¡if proxy_dict.get('code') ! = 200: raise Exception("Error al extraer el proxy.
raise Exception("Error al extraer el proxy, código de error: " + str(proxy_dict.get('code')))
Maniobras de fantasía en la vida real
Tenemos que tener en cuenta estas situaciones en el proyecto real:
| toma | prescripción |
|---|---|
| Tratamiento del tiempo de expiración de la IP | Conversión de marcas de tiempo con datetime |
| Pruebas de usabilidad por lotes | Combinación de subprocesos múltiples y solicitudes |
| Filtrado de IP anómalas | Una expresión regular comprueba el formato IP |
Pon un ejemplo completo con pruebas proxy:
importar peticiones
from concurrent.futures import ThreadPoolExecutor
def prueba_proxy(proxy)::
try: resp = requests.get('')
resp = requests.get('http://httpbin.org/ip',
proxies={'http': f "http://{proxy['ip']}:{proxy['port']}"},
timeout=5)
return True si resp.status_code == 200 else False
return False si resp.status_code == 200 else False except.
return False
Supongamos que obtenemos 10 agentes de ipipgo.
with ThreadPoolExecutor(max_workers=5) as executor: results = executor.map(test_proxy, ip_list)
resultados = executor.map(prueba_proxy, lista_ip)
alive_proxies = [ip for ip, status in zip(ip_list, results) if status]
Preguntas frecuentes QA
P: ¿Qué debo hacer si no puedo utilizar la IP proxy?
R: En primer lugar, compruebe la conectividad de la red y, a continuación, utilice la herramienta de comprobación en línea proporcionada por ipipgo. Se recomienda dar prioridad a los paquetes residenciales estáticos para una mayor estabilidad.
P: ¿Qué ocurre si hay datos anidados en el JSON devuelto?
R: Por ejemplo, si se encuentra con esta estructura: data→region→city, puede encadenar get para obtener el valor:
ciudad = proxy.get('región', {}).get('ciudad')
P: ¿Cómo debo elegir un paquete?
R: En función de las necesidades de la empresa:
- Residencial dinámico (estándar): adecuado para la recogida rutinaria de datos
- Enterprise Edition: se elige cuando se requiere una gran concurrencia
- Alojamiento estático: uso operativo fijo a largo plazo
Las ventajas únicas de ipipgo
Nuestro servicio de agencia cuenta con tres obras maestras:
1. La extracción es muy cómoda, la API devuelve directamente el formato JSON estándar
2. ApoyoDoble protocolo Socks5/HTTPSi cambia un parámetro en el código, puede cambiar
3. El cliente viene con la función de detección de IP, no es necesario escribir sus propios scripts de prueba
Especialmente para los negocios transfronterizos, con nuestro paquete dedicado TK, el retraso puede caer 40% o más. El precio es absolutamente concienzudo, paquetes residenciales dinámicos.7 más por 1 G de tráficomás barato que comprar una botella de bebida.
Por último, un consejo reflexivo: recuerde agregar la captura de excepciones al procesar JSON, proxy IP esta cosa fluctuaciones de la red son inevitables. Encontrado errores de análisis primero mira el documento, ipipgo formato de respuesta están estandarizados, de acuerdo con el código de ejemplo para cambiar el básico no será anulado.

