
Manos a la obra con Python para el procesamiento de datos de API
Recientemente, algunos amigos preguntaron Lao Zhang, utilizando Python para ajustar la interfaz para obtener los datos JSON cómo convertir a CSV, esta cosa parece simple, pero en realidad hay un montón de pozos ocultos. Especialmente cuando se necesita para recoger una gran cantidad de datos.La probabilidad de bloqueo de IP se duplica directamenteLo primero que tienes que hacer es echar un vistazo al servicio que estás utilizando. Hoy tomaremos como ejemplo nuestro servicio de proxy ipipgo para enseñarte cómo conseguirlo correctamente.
¿Por qué necesito una IP proxy que me ayude?
Tome un caso real: Xiao Wang escribió un rastreador de la semana pasada, los resultados se ejecutaron menos de 2 horas, el sitio de destino sacó su IP negro. Esta situación es demasiado común, muchas interfaces API tienenLimitación de la frecuencia de accesoLo primero que tienes que hacer es utilizar el proxy IP pool de ipipgo. Con el proxy IP pool de ipipgo, es como instalar innumerables "doppelgängers" para el programa, cambiando diferentes direcciones IP para cada petición, por lo que no es fácil ser encontrado.
| toma | No hace falta un agente. | Utiliza ipipgo. |
|---|---|---|
| Número de solicitudes diarias | 500 veces | Más de 5000 veces |
| probabilidad de bloqueo de IP | >80% | <5% |
Preparación del inicio de las obras
Empieza instalando algunas librerías esenciales (sáltatelas si ya las tienes instaladas):
pip install peticiones pandas
Centrándonos en la configuración proxy de la librería requests, muchos novatos caen de cabeza aquí. El formato de proxy para ipipgo debe escribirse así:
proxies = {
'http': 'http://用户名:密码@dirección-de-puerta-de-envío:puerto',
https': 'https://用户名:密码@dirección-gateway:puerto'
}
Descomposición de código en el mundo real
Supongamos que queremos obtener datos meteorológicos, el proceso completo consta de tres pasos:
- Llamada a API con IP proxy
- Aplanar los datos JSON
- Guardar como archivo CSV
importar peticiones
importar pandas como pd
Aquí lo sustituimos por la información real del proxy proporcionada por ipipgo
PROXY_USER = "tu número de cuenta"
PROXY_PASS = "tu contraseña"
GATEWAY = "gateway.ipipgo.com:9021"
def obtener_datos():
proxies = {
http': f'http://{PROXY_USER}:{PROXY_PASS}@{GATEWAY}',
https': f'http://{PROXY_USER}:{PROXY_PASS}@{GATEWAY}'
}
Introduzca aquí su propia dirección API
resp = requests.get('https://api.weather.com/data', proxies=proxies)
devolver resp.json()
Centrándonos en las estructuras anidadas
def parse_data(raw).
Expandir un diccionario anidado de varias capas
df = pd.json_normalize(raw, 'hourly', ['city','update_time'])
devolver df
if __name__ == '__main__'.
data = get_data()
df = parse_data(datos)
df.to_csv('tiempo.csv', index=False)
Guía para evitar el pozo
Tres escollos comunes para los novatos:
1. Error de autenticación del agente:检查账号密码里的特殊字符,比如@符号要换成%40
2. Campos que faltan: Tenga cuidado de especificar el parámetro meta cuando utilice json_normalize.
3. Problemas de codificaciónguardar csv con el parámetro encoding='utf_8_sig
Usted puede preguntar.
P: ¿Por qué utilizar ipipgo y no otros?
R: Su familia tiene un pony de un solo truco--enlace dinámico de puertosLa misma pasarela puede utilizar los protocolos HTTP y HTTPS sin tener que cambiar de una configuración a otra.
P: ¿Qué debo hacer si me bloqueo al procesar grandes cantidades de datos?
R: Pruebe con paginación + multihilo, recuerde asignar a cada hilo un proxy distinto. ipipgo'sPaquete corporativo High StashSoporta 500 concurrencias y funciona bien en persona.
P: ¿Qué debo hacer si la estructura de datos devuelta por la API cambia siempre?
R: Añada un bloque try-except antes del análisis sintáctico y utilice json.dumps(raw_data) para guardar los datos sin procesar en la copia de seguridad de la base de datos, de forma que pueda subsanar el error.
Habla con el corazón.
Las IPs proxy son como los neumáticos de los coches para la recogida de datos. Si utiliza neumáticos de mala calidad (proxies gratuitos), pinchará una rueda en cuestión de minutos en la autopista. ipipgo'sAgentes comercialesNuestro equipo lo ha probado y se ha recogido de forma continua durante 3 días sin caerse. Especialmente su función de enrutamiento inteligente, conmutación automática del nodo más rápido, que cambiar manualmente IP para ahorrar un montón de dolores de cabeza.
Por último, me gustaría recordar a los novatos que utilicen paquetes de pago por uso durante la fase de prueba, y luego cambien a paquetes mensuales cuando funcionen sin problemas. json to csv es sencillo, pero con una buena IP proxy, es una verdadera herramienta de productividad.

