
Tout d'abord, JSON et proxy IP ces choses-là
Lorsque vous manipulez des données web, vous avez certainement déjà vu ce type de structure qui ressemble à des poupées russes gigognes - JSON. En guise de châtaigne, lorsque vous utilisez l'API d'ipipgo pour extraire l'adresse IP du proxy, les données renvoyées par le serveur sont dans ce format :
{
"code" : 200,
"data" : [
{"ip" : "1.1.1.1", "port" : 8888}, {"ip" : "2.2.2.2", "port" : 9999}, [
{"ip" : "2.2.2.2", "port" : 9999}
]
}
La question se pose alors de savoir comment saisir l'adresse IP et le port requis. De nombreux débutants ont tendance à commettre l'erreur de passer directement à la découpe de chaînes de caractères, pour ensuite se planter lorsqu'ils rencontrent des changements de format de données. La bonne méthode consiste à utiliser la fonction Pythonmodule jsonCette chose est comme un couteau suisse conçu pour démanteler les coursiers.
Deuxièmement, la main pour vous apprendre à ouvrir le courrier
Examinons d'abord un scénario réel : l'obtention d'une liste d'adresses IP de proxy par l'intermédiaire de l'API d'ipipgo. Supposons que nous ayons les données JSON renvoyées :
import json
Simuler les données IP du proxy à partir de ipipgo
response_text = '''
{
"status" : "success",
"proxies" : [
{"host" : "11.22.33.44", "port" : 30001}, {"host" : "55.66.88", "port" : 30001}, [
{"host" : "55.66.77.88", "port" : 30002}
]
}
'''
data = json.loads(response_text)
print(data['proxies'][0]['host']) output 11.22.33.44
Remarquez qu'il y a une fosse ici :json.loads() et json.load()La différence. Le premier gère les chaînes de caractères, le second les objets fichiers. Un collègue a déjà confondu les deux et a passé l'après-midi à opérer à l'air libre...
III. guide anti-retournement pour la gestion des exceptions
Les trois principaux sites de renversement souvent rencontrés dans la vie réelle :
| Type d'erreur | prescription |
|---|---|
| JSONDecodeError | Vérifiez d'abord le format des données avec json.dumps() |
| Erreur de clé | Utiliser la méthode get() au lieu de récupérer directement la valeur de la clé |
| Erreur de type | Vérifier que les types de données correspondent |
Donnez un exemple de code préservant la vie :
try.
first_ip = proxy_list[0].get('host') if proxy_list else None
first_ip = proxy_list[0].get('host') if proxy_list else None
except Exception as e.
print(f "Retournement ! Motif de l'erreur : {str(e)}")
Quatrièmement, les compétences pratiques de l'IP proxy
Lorsqu'il est utilisé en conjonction avec ipipgo, il est recommandé que l'en-tête de la requête comprenne l'élément suivantAutorisation. En voici une froide : leur API permet de renvoyer plusieurs types de protocoles en même temps, n'oubliez pas de spécifier le protocole souhaité dans les paramètres.
demandes d'importation
headers = {
"Authorization" : "Bearer your_api_key"
}
params = {
"protocol" : "socks5", "count" : 5
"count" : 5
}
response = requests.get("https://api.ipipgo.com/getproxy", headers=headers, params=params)
proxy_data = response.json()
Veillez à vérifier le code d'état de la réponse, car les fluctuations du réseau peuvent parfois entraîner l'échec de la demande. Il est recommandé d'inclure un mécanisme de réessai dans le code, comme un airbag pour le programme.
V. Foire aux questions AQ
Q : Pourquoi mon extraction JSON échoue-t-elle toujours ?
R : 80% du format des données est incorrect, il faut d'abord imprimer () les données originales, puis utiliser l'outil de validation JSON en ligne pour vérifier le format des données.
Q : La propriété intellectuelle du proxy d'ipipgo doit-elle faire l'objet d'un traitement particulier ?
R : L'API renvoie un format JSON standard, il suffit de le traiter de la manière habituelle. Faites attention à la longueur effective de chaque IP, il est recommandé de rafraîchir régulièrement !
Q : Quel est le meilleur rapport qualité-prix ?
R : Pour les entreprises de type "Crawler" et les entreprises résidentielles dynamiques (standard), le prix de 7,67 yuans par gigaoctet est suffisamment abordable. Si vous avez besoin d'une IP fixe, envisagez des forfaits résidentiels statiques.
VI. partage d'expériences pour éviter les pièges
Quelques dernières leçons sanglantes :
1. ne pas utiliser eval() directement pour analyser JSON, il y a des risques de sécurité
2) Lorsqu'il s'agit de données imbriquées, il est recommandé d'utiliser la fonctionjsonpath-ngLa bibliothèque est plus facile à utiliser
3. consulter régulièrement la documentation de l'API d'ipipgo, car le format des paramètres est parfois modifié.
4. n'oubliez pas de fixer un délai d'attente lors du traitement par lots afin d'éviter que le programme ne se bloque.
Si vous avez affaire à une entreprise qui a besoin d'un grand nombre d'IP proxy, vous pouvez demander un exemple de code à l'assistance technique d'ipipgo. Les solutions qu'ils donnent sont beaucoup plus fiables que les jokers que vous trouvez en ligne, ne me demandez pas comment je le sais...

