
JSON to CSV thing, how to use Python ?
Dans le traitement des données, les utilisateurs ont certainement rencontré des problèmes de va-et-vient entre JSON et CSV. En particulier, nous faisons la collecte de données amis, proxy IP pour obtenir les données de retour dans neuf sur dix sont le format JSON, mais pour faire des rapports d'analyse ou CSV lisse. Aujourd'hui, nous allons vous apprendre à utiliser Python pour écrire un script de conversion, incidemment, comment utiliser ipipgo proxy IP pour améliorer l'efficacité de la collecte de données.
Préparez vos affaires.
Installez d'abord ces deux bibliothèques essentielles :
pip install pandas requests
Attention.! Si vous souhaitez traiter des données d'IP proxy provenant de différentes régions, il est recommandé de les utiliser avec l'API d'ipipgo. Leur pool de proxy couvre plus de 200 pays, ce qui permet d'éviter efficacement la situation de bannissement des IP pendant la collecte.
Script de conversion de base
import json
import csv
avec open('proxy_data.json') as f.
data = json.load(f)
En supposant que les données soient formatées comme suit pour les informations sur l'IP du proxy
[{"ip" : "1.1.1.1", "port":8080, "country" : "US"},...]
with open('output.csv', 'w', newline='') as csvfile: : csv.writer = csv.
writer = csv.writer(csvfile)
writer.writerow(["adresse IP", "port", "pays"])
for item in data : ["Adresse IP", "port", "pays"])
writer.writerow([item['ip'], item['port'], item['country']])
Cette version de base du script peut transformer des données IP de proxy simples en un tableau. Mais dans la pratique, les informations sur l'adresse IP du proxy que nous obtenons d'ipipgo peuvent être plus complexes, et contenir par exemple le temps de réponse, le type de protocole et d'autres données imbriquées.
Techniques de traitement avancées
Que faire en cas de JSON imbriqué ? Prenez une châtaigne :
{
"proxy_list" : [
{
"ip" : "1.1.1.1",
"auth" : { "username" : "ipipgo_user", "password" : "123456"}
}
]
}
Ce point doit être traité de manière récursive à ce stade :
def flatten_json(data) :
out = {}
for key in data : if isinstance(data[key], dict)
if isinstance(data[key], dict) : flattened = flatten_json(data[key]) : {}
flattened = flatten_json(data[key])
for subkey in flattened : out[f"{key}_json(data[key])
out[f"{key}_{subkey}"] = flattened[subkey]
out[f"{key}_{subkey}"] = aplati[subkey].
out[key] = data[key]
return out
Cette fonction modifie les noms des champs imbriqués engeo_countryetNom d'utilisateurIl est formaté pour une présentation facile en format CSV.
Temps consacré à l'assurance qualité
Q : Pourquoi ai-je besoin d'un proxy IP pour la conversion des données ?
R : Lorsque vous devez traiter par lots des données IP de proxy provenant de différentes régions, l'utilisation de services comme ipipgo peut garantir une acquisition de données stable. En particulier lorsqu'il s'agit de données massives, leurs serveurs mandataires résidentiels dynamiques peuvent efficacement éviter d'être bloqués.
Q : Quel est l'écueil le plus courant de la conversion de JSON en CSV ?
R : 80% est un problème de codage ! N'oubliez pas de spécifier lors de l'ouverture du fichierencoding='utf-8-sig'Sinon, le chinois risque d'être brouillé.
Q : Comment intégrer l'IP proxy d'ipipgo dans le script ?
R : Ils fournissent des SDK prêts à l'emploi, ajoutez-les à la demande :
proxies = {
"http" : "http://用户名:密码@gateway.ipipgo.com:端口",
"https" : "http://用户名:密码@gateway.ipipgo.com:端口"
}
Cela vous permettra de changer automatiquement d'adresse IP pendant la collecte des données.
Scénario complet en direct
import pandas as pd
from ipipgo_sdk import ProxyClient ipipgo official SDK
Obtenir la dernière liste d'adresses IP de proxy
client = ProxyClient(api_key="votre clé")
proxy_data = client.get_proxies(country="US", protocol="socks5")
Conversion du code de base
df = pd.json_normalise(proxy_data['list'])
df.to_csv('us_socks5_proxies.csv', index=False, encoding='utf-8-sig')
Ce script utilise la fonctionpandasLa méthode json_normalize permet d'étendre automatiquement la structure imbriquée. Avec le SDK d'ipipgo, vous pouvez passer de l'obtention d'IP proxy à la génération de CSV en une seule fois.
Conseils pour l'optimisation de l'efficacité
N'oubliez pas ces deux astuces lorsque vous travaillez avec des millions de données :
1. utiliser des générateurs au lieu de listes pour réduire l'utilisation de la mémoire
2. ouverture de l'ipipgoRoutage intelligentFonction de sélection automatique du nœud API le plus rapide
Une dernière remarque, vérifiez régulièrement l'ordre des champs du fichier CSV. Il peut y avoir des différences de champs dans les informations IP du proxy pour différentes régions, il est donc recommandé de commencer par le champpd.read_json()Prévisualiser la structure des données avant le traitement.

