
Utilisation de Python pour traiter des données JSON provenant d'adresses IP proxy
Nous faisons de la collecte de données et nous avons souvent à faire à des proxy IP, aujourd'hui nous prenons la scène actuelle pour dire comment utiliser Python pour traiter les données JSON renvoyées par le fournisseur de service proxy IP. Par exemple, supposons que nous extrayons un lot d'IP proxy de ipipgo et que nous les renvoyons dans ce format :
{
"code" : 200,
"data" : [
{"ip" : "1.1.1.1", "port" : 8000, "expire_time" : "2024-01-01 12:00:00"}, {"ip" : "2.2.2.2", "port" : 8080, "expire_time" : 2024-01-01 12:05:00"}, [
{"ip" : "2.2.2.2", "port" : 8080, "expire_time" : "2024-01-01 12:05:00"}
]
}
Analyse de base des trois axes
Commencez par enseigner aux débutants trois actions indispensables :
import json
En supposant que la réponse soit les données brutes renvoyées par ipipgo
raw_data = response.text
Le premier style : vers le dictionnaire
proxy_dict = json.loads(raw_data)
Deuxièmement : prendre la liste des adresses IP
ip_list = proxy_dict['data']
Troisième style : traitement de la traversée
pour proxy dans ip_list.
print(f "Proxy disponibles : {proxy['ip']}:{proxy['port']}")
Attention aux nids-de-poule que vous pouvez rencontrer ici :Veillez à vérifier que le champ du code est de 200Si ce n'est pas le cas, c'est que quelque chose ne va pas dans la demande. Suggérez d'ajouter un jugement :
si proxy_dict.get('code') ! = 200 : raise Exception("Échec de l'extraction du proxy.
raise Exception("Échec de l'extraction du proxy, code d'erreur : " + str(proxy_dict.get('code')))
Des manœuvres fantaisistes dans la vie réelle
Nous devons tenir compte de ces situations dans le projet actuel :
| prendre | prescription |
|---|---|
| Traitement du délai d'expiration de l'IP | Conversion des horodatages en datetime |
| Tests de convivialité par lots | Combinaison multithreading + requêtes |
| Filtrage des IP anormales | Une expression régulière vérifie le format IP |
Donnez un exemple complet avec un test par procuration :
import requests
from concurrent.futures import ThreadPoolExecutor
def test_proxy(proxy): :
try : resp = requests.get('')
resp = requests.get('http://httpbin.org/ip',
proxies={'http' : f "http://{proxy['ip']}:{proxy['port']}"},
timeout=5)
return True if resp.status_code == 200 else False
return False if resp.status_code == 200 else False except.
return False
Supposons que nous recevions 10 agents d'ipipgo.
with ThreadPoolExecutor(max_workers=5) as executor : results = executor.map(test_proxy, ip_list)
résultats = executor.map(test_proxy, ip_list)
alive_proxies = [ip for ip, status in zip(ip_list, results) if status]
Foire aux questions QA
Q : Que dois-je faire si je ne peux pas utiliser l'IP proxy ?
R : Vérifiez d'abord la connectivité du réseau, puis utilisez l'outil de test en ligne fourni par ipipgo. Il est recommandé de donner la priorité aux paquets résidentiels statiques pour une meilleure stabilité.
Q : Que se passe-t-il s'il y a des données imbriquées dans le JSON renvoyé ?
R : Par exemple, si vous rencontrez la structure suivante : data→region→city, vous pouvez enchaîner get pour récupérer la valeur :
city = proxy.get('region', {}).get('city')
Q : Comment choisir un forfait ?
R : En fonction des besoins de l'entreprise :
- Dynamique résidentielle (standard) : convient à la collecte de données de routine
- Enterprise Edition : à choisir lorsqu'une forte concurrence est nécessaire
- Logement statique : utilisation opérationnelle fixe à long terme
Les avantages uniques de l'ipipgo
Notre service d'agence compte trois chefs-d'œuvre :
1. l'extraction est très pratique, l'API renvoie directement le format JSON standard
2. soutienProtocole double Socks5/HTTPSi vous modifiez un paramètre dans le code, vous pouvez passer d'un paramètre à l'autre.
3. le client est doté d'une fonction de détection de l'IP, il n'est pas nécessaire d'écrire ses propres scripts de test
En particulier pour les affaires transfrontalières, avec notre paquet dédié TK, le délai peut chuter de 40% ou plus. Le prix est absolument consciencieux, les paquets résidentiels dynamiques7 de plus pour 1 G de traficmoins cher que l'achat d'une bouteille de boisson.
Enfin, un conseil bien pensé : pensez à ajouter la capture d'exception lors du traitement de JSON, le proxy IP cette chose les fluctuations du réseau sont inévitables. Les erreurs de parsing rencontrées regardent d'abord le document, le format de réponse ipipgo sont standardisés, selon l'exemple de code pour changer le basique ne sera pas renversé.

