
Qu'est-ce qu'un fichier JSON ?
Nous nous sommes engagés dans le crawling des frères auraient dû voir le fichier .json suffixe, ce produit est un bloc-notes avec le format. Par exemple, à partir de l'arrière-plan ipipgo pour obtenir la liste IP proxy, neuf fois sur dix sont ce format. Par exemple, vous pouvez l'ouvrir et voir la structure :
{
"proxies" : [
{"ip" : "123.45.67.89", "port" : 8080}, {"ip" : "98.76.54.32", "port" : 3128}, {"proxies" : [
{"ip" : "98.76.54.32", "port" : 3128}
]
}
Attention à cela dans le cadre de laparenthèses frisées sur parenthèses centralesC'est la manière standard d'écrire JSON. Si Sensei traite des adresses IP de proxy ou d'autres données, vous devez d'abord vous assurer que cette structure est correcte.
Python : comment manger ce bol de "riz JSON" ?
L'utilisation de Python pour traiter des fichiers JSON est en fait aussi simple que de se défoncer, en trois étapes principales :
import json
Etape 1 : Ouvrir la boîte
avec open('ipipgo_proxies.json', 'r') as f :
data = json.load(f)
Étape 2 : Choisir et trier
for proxy in data['proxies'].
print(f "Proxy disponibles : {proxy['ip']}:{proxy['port']}")
Étape 3 : Mise à jour de l'inventaire (au format ipipgo par exemple)
data['proxies'].append({"ip" : "76.135.28.41", "port" : 8888})
with open('new_proxies.json', 'w') as f.
json.dump(data, f, indent=4)
Et voici le clou du spectacle ! Lorsque l'on utilise le service proxy d'ipipgo, le format JSON renvoyé par leur API est particulièrement bien organisé, avec des noms de champs en minuscules fixes, ce qui est particulièrement pratique pour le traitement par lots.
Comment les IP proxy et JSON s'articulent-ils ?
Engagés dans la collecte de données de vieux conducteurs savent que le proxy IP et le fichier JSON qui est le partenaire en or. Prenez une scène réelle :
import requests
from json.decoder import JSONDecodeError
proxies = {
'http' : 'http://ipipgo_username:ipipgo_password@gateway.ipipgo.com:9021', 'https' : 'http://ipipgo_username:ipipgo_password@gateway.ipipgo.com:9021'
'https' : 'https://ipipgo_username:ipipgo_password@gateway.ipipgo.com:9021'
}
try.
response = requests.get('https://api.example.com/data', proxies=proxies)
data = response.json() automatiquement converti en dictionnaire
print(data['results'][0]['ip_address'])
except JSONDecodeError : print("data['results'][0]['ip_address']")
print("Ce site ne renvoie pas un JSON correct !")
En voici une.Conseils cachésSupport de proxy pour ipipgoL'authentification du nom d'utilisateur et du mot de passe est inscrite directement dans l'adresse du proxy.Cette conception permet de gagner du temps en évitant de traiter manuellement l'authentification à chaque fois.
Guide pratique pour éviter la fosse
Les débutants ont souvent des difficultés à s'y retrouver :
| arrêt au stand | une posture correcte |
|---|---|
| json.load() signale une erreur d'encodage | Ajouter encoding='utf-8' à open(). |
| Champ KeyError non trouvé | Utilisez d'abord data.get('field name') pour récupérer la valeur en toute sécurité. |
| Échec de la demande en raison d'une défaillance de l'IP du proxy | Avec la fonction de commutation automatique d'ipipgo |
séance de questions-réponses
Q : Pourquoi dois-je utiliser JSON avec le proxy d'ipipgo ?
R : Parce que leur API renvoie la spécification du format et prend également en charge l'optionaccès en vracrépondre en chantantDemande de statutqui est directement converti en dictionnaire et fonctionne.
Q : Que dois-je faire en cas de saturation de la mémoire lors de la manipulation de fichiers volumineux ?
R : Utilisez la bibliothèque ijson pour la lecture en continu, ou appelez directement l'API de pagination d'ipipgo, ne récupérez pas toutes les données en une seule fois.
Q:json.dump save the Chinese become garbled ?
R : Ajoutez deux paramètres pour maintenir la paix : ensure_ascii=False, encoding='utf-8′.
Et enfin, une connaissance froide : le JSON de la liste de proxy d'ipipgo cache unchamp secretIl s'agit du "region_code", qui permet de sélectionner avec précision l'IP d'exportation d'une région spécifique, mais je ne le dirai pas au grand public !

