
Des exercices pratiques vous apprennent à convertir les données de l'API en fichiers CSV.
Tout le monde a dû rencontrer cette situation lors de la capture de données : il est difficile de passer par l'interface API, mais le résultat des données renvoyées est désordonné et ne peut pas être utilisé du tout. À ce stade, vous devez vous fier à l'interface de l'API.Service Proxy IPpour stabiliser la source de données, puis transformer les données dans un format commun tel que CSV. Aujourd'hui, nous prenons le service proxy ipipgo comme un marronnier, disons comment opérer.
Pourquoi dois-je utiliser une adresse IP proxy ?
De nombreux sites web disposent d'appels API pourlimite de fréquenceLe proxy résidentiel dynamique d'ipipgo peut automatiquement changer l'IP d'exportation, et la même interface n'a pas déclenché la limite de 200 invocations consécutives. Le fait est que leur pool d'IP est suffisamment important, contrairement à certains petits ateliers qui totalisent plusieurs centaines d'IP dans les deux sens.
import requests
from ipipgo import get_proxy ipipgo official SDK
def fetch_api_data(url) :
proxy = get_proxy(type='https') Récupère automatiquement les derniers proxys.
headers = {'User-Agent' : 'Mozilla/5.0'}
headers = {'User-Agent' : 'Mozilla/5.0'} try.
response = requests.get(url, proxies={'https' : proxy}, headers=headers, timeout=10)
return response.json()
except Exception as e.
print(f "Request failed, changing IP automatically...") Message d'erreur : {str(e)}")
return fetch_api_data(url) Mécanisme de répétition automatique
Conversion de l'ensemble pratique de CSV
Ne vous précipitez pas pour convertir vos données API dès que vous les recevez, faites d'abord ces trois choses :
1. nettoyage des champsSupprimer les champs imbriqués inutilisés (par exemple, séparer l'adresse de la ville).
2. l'unification du codageLes textes sont obligatoirement convertis en UTF-8, ce qui permet d'éviter les erreurs de code dans les fichiers csv ouverts.
3. Gestion des exceptionsLes valeurs par défaut sont définies pour les champs qui peuvent être manquants, par exemple 0 s'il n'y a pas de données dans le champ "prix".
Le module csv pour python est recommandé, il est beaucoup plus léger que pandas. En particulier lorsqu'il s'agit de millions de données, vous pouvez économiser la moitié de la mémoire :
import csv
def json_to_csv(data, filename).
Extraire tous les noms de champs
fieldnames = list(data[0].keys())
with open(filename, 'w', newline='', encoding='utf-8') as csvfile :
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
pour la ligne dans les données.
Traitement des champs imbriqués
if 'location' in row.
row['city'] = row['location'].get('city','')
del row['location']
writer.writerow(row)
Conseils testés et approuvés
- Calendrier de rotation de l'IPIl est recommandé de changer d'adresse IP tous les 50 traitements de données, afin de ne pas gaspiller les ressources IP, mais aussi d'éviter d'être bloqué !
- réglage du délai d'attentePour ce faire, vous pouvez : fixer le délai de connexion à 3 secondes et le délai de lecture à 15 secondes, et changer de proxy dès que vous constatez un décalage.
- Étalonnage des résultatsAprès avoir transféré le fichier CSV, sélectionnez 10 éléments au hasard et utilisez les différentes adresses IP de sortie d'ipipgo pour demander l'API d'origine afin de comparer les données.
Pièges courants AQ
Q:Quel est le code désordonné lorsque j'ouvre le fichier CSV ?
R : 80% est un problème de codage, il est recommandé d'écrire le fichier pour forcer le codage spécifié = 'utf-8-sig', ce paramètre peut être compatible avec Excel !
Q : La quantité de données est trop importante pour la mémoire ?
R : Utilisez le générateur pour écrire une par une, ne chargez pas toutes les données en même temps. Parallèlement, réglez l'intervalle de commutation du proxy d'ipipgo pour éviter de surcharger une seule IP.
Q : Que faire si certains champs sont souvent manquants ?
R : Prédéfinir tous les champs possibles dans les noms de champs et remplir automatiquement les chaînes vides si elles sont manquantes. N'oubliez pas d'activer la fonction de réessai de demande d'ipipgo, car les fluctuations du réseau sont parfois à l'origine de la perte de données !
Pourquoi ipipgo ?
J'ai utilisé 7 ou 8 fournisseurs de proxy et j'ai finalement opté pour ipipgo à cause de ces trois choses :
1. Véritable IP résidentielleLes agents de la salle des serveurs ne sont pas aussi facilement reconnaissables que les agents de la salle des serveurs.
2. la criminalistique dynamiqueLes mots de passe des comptes : Plus besoin d'entrer manuellement les mots de passe des comptes, le SDK s'en charge automatiquement !
3. positionnement précisLes données sont précises jusqu'au niveau de la ville lorsque des PI régionales spécifiques sont nécessaires.
Ils ont récemment mis en place une nouvellePrévision de survie de la PICette fonction permet de savoir à l'avance combien de temps il reste à l'IP en cours. Pour des opérations telles que le transfert de fichiers CSV, qui nécessitent des connexions stables, il est recommandé de choisir des segments IP qui sont actifs depuis plus de 30 minutes.
Enfin, je voudrais vous rappeler qu'après avoir transféré les données, vous ne devez pas oublier d'utiliser l'IP proxy pour vérifier à nouveau les données. Auparavant, j'ai subi une perte, le CSV local semblait bon, le client a dit qu'il n'y avait pas de données, et plus tard, j'ai découvert que certaines IP régionales du site cible bénéficiaient d'un traitement spécial. Désormais, le nœud global d'ipipgo est utilisé pour effectuer la deuxième vérification, et il n'y a plus de problèmes.

