
JSON comme un colis de messagerie à ouvrir... Les dictionnaires Python jouent si bien !
S'engager dans les données comme recevoir une livraison express, les fournisseurs de services IP proxy retournent souvent des données JSON enveloppées étroitement. Aujourd'hui, nous utilisons un hachoir pour couper la pastèque, main dans la main pour vous apprendre à utiliser Python pour démanteler ce "paquet de données", en nous concentrant sur la façon de l'utiliser en pratique avec le service proxy d'ipipgo.
Guide de décryptage des reçus de courrier
Examinons un scénario typique : lorsque l'on utilise l'API d'ipipgo pour obtenir une IP proxy, le JSON renvoyé ressemble à ceci :
{
"code":200,
"data" :[
{"ip" : "1.1.1.1", "port":8000, "expire" : "2024-03-01"}, {"ip" : "2.2.2.2", "port":9000, "expire" : "2024-03-01"}, }
{"ip" : "2.2.2.2", "port":9000, "expire" : "2024-03-02"}
]
}
C'est comme les étagères d'un poste de livraison.Indiquer le numéro de l'étagère.Plusieurs parcelles (informations IP) sont placées en dessous. La position correcte pour ouvrir les colis avec Python est la suivante :
importer des demandes
import json
resp = requests.get('https://api.ipipgo.com/getips')
ip_data = json.loads(resp.text)
Ce qu'il faut savoir ! Tout d'abord, il faut s'assurer que la livraison n'est pas erronée
if ip_data['code'] == 200.
for package in ip_data['data'].
print(f "IP disponible:{package['ip']}:{package['port']}")
Sauvetage courant sur les lieux d'un renversement
Les débutants se retrouvent souvent coincés dans ces nids de poule :
1. Ce n'est pas la bonne clé.Il est suggéré de commencer par print(json.dumps(data,indent=2)) pour imprimer l'ensemble de la structure.
2. Avertissement concernant les colis aériensCertains API peuvent renvoyer une liste vide de données, n'oubliez pas d'ajouter un jugement if : if ip_data.get('data')
Comment briser plusieurs couches d'imbrication
Je suis tombé sur ces données de type poupée gigogne russe :
{
"node1":{
"node2" :[
{ "detail":{ "ip" : "3.3.3.3.3"}}
]
}
}
Basé sur IPune posture correcteEst :
ip = data['node1']['node2'][0]['detail']['ip']
Si vous avez peur de vous tromper dans votre écriture, vous pouvez la démonter couche par couche, comme on épluche un oignon :
layer1 = data.get('node1',[{}])
layer2 = layer1.get('node2',[{}])
first_item = layer2[0] if layer2 else {}
detail = first_item.get('detail',{})
ip = detail.get('ip', 'not found')
Conseils pratiques et astuces
Lorsqu'il est utilisé avec l'agent ipipgo, rappelez-vous ceciTriple frappe d'or: :
proxies = {
'http' : 'http://user:pass@1.1.1.1:8000',
'https' : 'http://user:pass@1.1.1.1:8000'
}
resp = requests.get('https://需要访问的地址', proxies=proxies, timeout=5)
resp.raise_for_status() Important ! Signalez une erreur si vous trouvez une exception
data = resp.json()
séance de questions-réponses
Q : Pourquoi mon analyse JSON ne cesse-t-elle de signaler des erreurs ?
R : 80% de ces trois problèmes : 1) la requête réseau elle-même a échoué 2) le retour n'est pas au format JSON standard 3) les exceptions n'ont pas été gérées. Il est suggéré d'utiliser try...except pour envelopper le processus d'analyse.
Q : Comment puis-je tester rapidement la disponibilité de l'IP proxy d'ipipgo ?
R : Vous pouvez utiliser ce code de vérification rapide :
import requests
from concurrent.futures import ThreadPoolExecutor
def test_proxy(proxy): :
try : resp = requests.get('')
resp = requests.get('http://ip.ipipgo.com/checkip', proxies={'http':proxy}, timeout=3), timeout=3)
proxies={'http':proxy}, timeout=3)
return "success" if resp.status_code == 200 else "failure"
sauf.
return "timeout"
Tester plusieurs IP en même temps avec plusieurs threads
avec ThreadPoolExecutor(10) as exe : results = exe.map(test_proxy, test_proxy, test_proxy, test_proxy)
résultats = exe.map(test_proxy, ['1.1.1.1:8000','2.2.2.2:9000'])
Q : Pourquoi recommandez-vous d'utiliser les services d'ipipgo ?
R : Trois raisons essentielles : 1) un pool d'adresses IP exclusif sans plantage 2) la prise en charge du paiement au volume sans gaspillage 3) un service clientèle technique professionnel disponible 7×24 heures. En particulier lors de la collecte de données à grande échelle, un service proxy stable est votre gilet pare-balles numérique.

