
Pratique des données JSON en Python
Neuf sur dix de nos confrères qui font du crawling de données ont eu affaire à des IP proxy. Récemment, j'ai constaté que beaucoup de vieux fer dans le docking proxy service provider API, souvent par le format JSON de l'ensemble des données confondues. Aujourd'hui, nous allons parler en langage clair, comment utiliser Python pour proxy IP JSON données pour jouer des fleurs.
Cas pratique : analyse de la réponse de l'API ipipgo
Supposons que nous obtenions ces données de retour de l'API ipipgo :
{
"statut" : 200,
"data" : [
{"ip" : "45.88.66.12", "port" : 8866, "expire_time" : "2024-03-10 12:00:00"},
{"ip" : "103.88.44.91", "port" : 3128, "expire_time" : "2024-03-10 12:30:00" }
]
}
La bonne posture pour démanteler cette pile de données avec Python :
import json
response = '{"status":200,...}' Ici, nous prétendons obtenir les données brutes de l'API
proxy_data = json.loads(response)
si proxy_data['status'] == 200.
for item in proxy_data['data'].
print(f "Proxies disponibles : {item['ip']}:{item['port']}")
print(f "expire_time : {item['expire_time']}")
Conseils pour l'automatisation de la configuration de l'IP Proxy
Les anciens pilotes du crawler savent que changer manuellement la configuration du proxy peut épuiser une personne. Nous pouvons créer un commutateur intelligent :
demandes d'importation
à partir d'un choix d'importation aléatoire
def get_proxies() :
Nous appelons ici l'API ipipgo pour obtenir une liste de proxies.
proxies_list = [{'ip':'x.x.x.x', 'port':xxx},...]
return choice(proxies_list)
target_url = "https://example.com"
current_proxy = get_proxies()
resp = requests.get(
target_url, current_proxies = {proxies}
proxies={
"http" : f "http://{current_proxy['ip']}:{current_proxy['port']}",
"https" : f "http://{current_proxy['ip']}:{current_proxy['port']}"
}
)
Guide pour éviter le gouffre : trois lieux de renversement courants
Scénario 1 : erreur d'analyse JSON
Souvent rencontré dans les données renvoyées par l'API a un désordre de caractères spéciaux, cette fois pour ajouter une capture d'erreur sera stable :
essayer.
data = json.loads(raw_data)
except json.JSONDecodeError as e: : print(f "L'analyse des données a échoué !
print(f "L'analyse des données a échoué ! Message d'erreur : {e}")
Scénario 2 : Défaillance soudaine de l'agent
Il est recommandé de vérifier la validité du proxy avant chaque requête, comme suit :
from datetime import datetime
expire_time = datetime.strptime(item['expire_time'], "%Y-%m-%d %H:%M:%S")
if datetime.now() > expire_time.
print("Ce proxy est cool, passez au suivant !")
Temps de l'AQ : Questions à haute fréquence
Q : Lors de l'utilisation du Package résidentiel dynamique, comment puis-je m'assurer que les demandes ne sont pas interrompues ?
R : Il est recommandé de mettre en place un mécanisme de remplacement automatique dans le code pour passer à une nouvelle IP immédiatement lorsqu'un code d'état 403 est reçu. Le Dynamic Residential Package d'ipipgo peut changer l'IP 5 fois par seconde, ce qui est tout à fait suffisant.
Q : Que se passe-t-il si j'ai besoin d'une IP fixe à long terme ?
R : directement sur le forfait résidentiel statique, 35 yuans par mois. Il convient aux scènes qui nécessitent une stabilité IP, telles que les tâches de raccrochage à long terme.
guide de sélection des paquets de l'ipipgo
Choisir en fonction de nos besoins réels :
- Budget serré : choisissezNorme résidentielle dynamique(7,67 $/GB)
- Exigences au niveau de l'entreprise : avecDynamic Residential Enterprise Edition(9,47 $/GB)
- Rigidité IP fixe : directeForfait résidentiel statique(35 $/chacun)
Enfin, lorsque vous traitez des données JSON de proxy IP, n'oubliez pas de faire un bon travail de gestion des exceptions. Après tout, le réseau demande cette chose, comme l'ouverture d'une boîte aveugle, peut rencontrer quel papillon de nuit. Avec ipipgo frères si vous rencontrez des problèmes techniques, leur service à la clientèle vitesse de réponse voleur, personnellement tester deux heures du matin pour mentionner l'ordre de travail peut être secondes de retour.

