
Utilisation de Python pour traiter des données JSON provenant d'adresses IP proxy
Les amis engagés dans des crawlers de réseau ont dû rencontrer cette situation : il est difficile de trouver un fournisseur de service IP proxy, le résultat du format des données de retour est un désordre. À ce moment-là, nous devons nous fier à la méthode d'analyse JSON, en particulier avec Python, cet outil magique pour traiter, peut certainement vous faire perdre quelques cheveux.
Les bases de JSON sans se perdre
Supposons que vous obteniez les données suivantes de l'API ipipgo :
{
"proxy_list" : [
{"ip" : "192.168.1.1", "port":8080, "type" : "socks5"}, {
{"ip" : "10.0.0.2", "port":3128, "type" : "http"}
]
}
Il est facile à désassembler avec la bibliothèque json de Python :
import json
raw_data = 'la chaîne JSON ci-dessus'
parsed = json.loads(raw_data)
for proxy in parsed['proxy_list'].
print(f "Proxy disponibles : {proxy['ip']}:{proxy['port']}")
La bataille de l'IP par procuration est lancée
C'est là que le bât blesse ! Lorsque l'on utilise la bibliothèque de requêtes avec des proxys, de nombreuses personnes sont bloquées sur le format des paramètres :
demandes d'importation
proxies = {
"http" : "http://用户:密码@ip:port",
"https" : "http://用户:密码@ip:port"
}
Exemple de proxy de ligne louée TK avec ipipgo
resp = requests.get('target site', proxies=proxies, timeout=10)
Rappel spécial :Si vous rencontrez des erreurs de certificat SSL, ajoutez unverify=FalseParamètre une solution temporaire, mais l'environnement officiel se souvient de correspondre au certificat.
Comment choisir un forfait ipipgo
Il existe en fait une astuce pour choisir leurs forfaits :
- Être une option de collecte de donnéesDynamique résidentielle (standard)Le prix de plus de 7 $ pour 1G de trafic est suffisamment abordable.
- Entreprise Business DirectDynamic Residential (Entreprise)Paquet, la stabilité est plus élevée
- Option IP fixeMaisons statiques35 dollars par mois, il n'y a pas à dire.
Lignes directrices pour le déminage - pièges communs
Q:Que dois-je faire si je reçois un message KeyError lors de l'analyse JSON ?
R : Quatre-vingt pour cent des noms de champs sont mal écrits.print(parsed.keys())Examinez la structure des données
Q : Que dois-je faire si je ne parviens pas à me connecter à l'adresse IP du proxy ?
R : Vérifiez d'abord les paramètres de la liste blanche. Il faut 3 à 5 minutes pour que l'API d'ipipgo prenne effet après l'extraction.
Q : Comment passer automatiquement d'un agent à l'autre ?
A : Utiliser une structure en boucle + une sélection aléatoire pour effectuer une rotation de la liste des mandataires d'ipipgo.
Trucs et astuces avancés
Essayez cette optimisation des performances lorsque vous traitez avec un grand nombre d'agents :
from multiprocessing import Pool
def check_proxy(proxy) :
Logique de vérification de la disponibilité d'un proxy
passer
if __name__ == '__main__' : with Pool(4) as p : if __name__ == '__main__'.
avec Pool(4) as p.
results = p.map(check_proxy, proxy_list)
L'utilisation de plusieurs processus pour vérifier l'état de survie de l'agent est plus rapide qu'un seul thread. N'oubliez pas de configurer le réapprovisionnement automatique dans le backend d'ipipgo pour vous assurer que le pool d'agents est toujours plein.
Et enfin, une boisson fraîche : le soutien à la ligne transfrontalière d'ipipgoprotocole socks5qui est plus stable que le protocole http dans certains scénarios particuliers. Face à l'apparition fréquente de CAPTCHA, vous pouvez changer le type de protocole pour essayer, vous aurez peut-être une surprise.

