
Python gère les réponses JSON provenant d'IP proxy, en évitant les pièges
Nos amis crawlers ont dû rencontrer cette situation - ils ont bien reçu les données de retour de l'API proxy IP, mais ne peuvent pas analyser l'IP disponible. Pas de panique, nous allons pas à pas vous apprendre à utiliser Python pour jouer avec la réponse JSON de l'API proxy.
Version de base : analyse directe du contenu de la réponse
Prenons par exemple la réponse API d'ipipgo et commençons par une structure typique (données simulées) :
{
"code" : 200,
"data" : [
{"ip" : "1.1.1.1", "port":8080, "expire_time" : "2024-01-01 12:00:00"},
{"ip" : "2.2.2.2", "port":8888, "expire_time" : "2024-01-01 12:05:00"}
]
}
Lorsqu'elle est traitée en Python, la fonctionNe vous contentez pas de le charger et de vous arrêter là.N'oubliez pas d'ajouter un code de vérification du statut :
importer des demandes
import json
resp = requests.get('https://api.ipipgo.com/getip')
if resp.status_code == 200 : data = json.loads(resp.text)
data = json.loads(resp.text)
si data['code'] == 200.
if data['code'] == 200 : for proxy in data['data'] : print(f"{proxy['data'])")
print(f"{proxy['ip']}:{proxy['port']}")
Compétences pratiques : gestion des exceptions de l'IP proxy
Avez-vous déjà rencontré l'une de ces situations ? Il est évident que les données sont renvoyées, mais la propriété intellectuelle échoue lorsqu'elle est utilisée. Il est recommandé, lors de l'analyse deAjouter un contrôle de validité: :
from datetime import datetime
for proxy in data['data']: : expire = datetime.strptime(proxy['expire_time'])
expire = datetime.strptime(proxy['expire_time'], "%Y-%m-%d %H:%M:%S")
if datetime.now() < expire.
usable_proxies.append(proxy)
Les dates d'expiration des procurations d'ipipgo sont indiquées à la seconde près, ce qui est particulièrement important pour les programmes qui doivent fonctionner pendant de longues périodes. Les dates d'expiration de leurPackage Dynamic Residential (Enterprise Edition)Période de validité plus longue, adaptée aux scénarios d'entreprise qui nécessitent une IP stable.
Opérations avancées : commutation automatique des pools de proxy
Combiné aux fonctionnalités de l'API d'ipipgo, il est possible de créer un pool d'agents intelligents. Notez ces deux points essentiels :
- mettre en place30 secondes à l'avanceActualiser les adresses IP arrivant à expiration
- Stockage séparé pour les différents protocoles (HTTP/HTTPS)
def update_proxy_pool() :
new_proxies = requests.get('https://api.ipipgo.com/reload').json()
for p in new_proxies['data'].
if p['type'] == 'https'.
https_pool.append(f"{p['ip']}:{p['port']}")
sinon.
http_pool.append(f"{p['ip']}:{p['port']}")
Pourquoi recommandez-vous ipipgo ?
Il a utilisé 7 ou 8 services proxy et a finalement choisi celui d'ipipgo.Trois avantages indéniables: :
| Fonctionnalité | Autres FAQ | solutions ipipgo |
|---|---|---|
| Soutien au protocole | Protocole HTTP uniquement | Support complet de Socks5/HTTPS |
| format de réponse | Incohérence des champs JSON | Structure fixe + noms de champs explicites |
| Options du paquet | achat obligatoire d'un grand paquet de circulation | Forfaits statiques à partir de 35 $/IP |
AQ pour les questions à haute fréquence
Q:JSONDecodeError est toujours signalé lors de l'analyse ?
Il est recommandé d'utiliser resp.status_code pour déterminer le statut, puis d'ajouter la logique d'analyse parcellaire try-except.
Q : J'ai obtenu l'adresse IP, mais le délai de connexion est dépassé.
R : Il se peut que l'adresse IP soit bloquée, changez-la en ipipgo.Ligne TKCette ligne a un taux de réussite plus élevé.
Q : Vous devez traiter plusieurs retours API en même temps ?
R : Utilisez la fonctionInterface d'extraction par lotsSi vous souhaitez obtenir des adresses IP de plusieurs régions à la fois, n'oubliez pas d'ajouter des filtres de champs géographiques à votre analyse.
Une dernière chose.Conseils cachés: retour de l'assistance API d'ipipgoDifférents formats de donnéesS'il est difficile de traiter JSON en Python, vous pouvez passer au format txt et le lire directement ligne par ligne, en particulier dans les paramètres de l'API en ajoutant un format=txt sur la ligne. Notez toutefois que vous perdrez alors le port, le délai d'expiration et d'autres détails, ce qui convient pour tester rapidement la scène.

