
Erstens, JSON und Proxy IP diese Dinge
Wenn Sie mit Webdaten zu tun haben, müssen Sie diese Art von Struktur gesehen haben, die wie russische Schachtelpuppen aussieht - JSON. Wenn Sie die API von ipipgo verwenden, um die Proxy-IP zu extrahieren, sind die vom Server zurückgegebenen Daten in diesem 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}
]
}
Nun stellt sich die Frage, wie man die benötigte IP-Adresse und den Port herausschreibt. Viele Neulinge neigen dazu, den Fehler zu machen, direkt mit dem Ausschneiden von Zeichenketten zu beginnen, nur um dann abzustürzen, wenn sich das Datenformat ändert. Die richtige Haltung ist die Verwendung von Pythons eigenemjson-ModulDieses Ding ist wie ein Schweizer Armeemesser, das für die Demontage von Kurieren entwickelt wurde.
Zweitens, Hand, um Sie zu lehren, den Kurier zu öffnen
Schauen wir uns zunächst ein reales Szenario an: Abruf einer Liste von Proxy-IPs über die API von ipipgo. Nehmen wir an, wir haben die zurückgegebenen JSON-Daten:
json importieren
Proxy-IP-Daten von ipipgo simulieren
response_text = '''
{
"status": "Erfolg",
"proxies": [
{"host": "11.22.33.44", "port": 30001}, {"host": "55.66.88", "port": 30001}, [
{"host": "55.66.77.88", "port": 30002}, [ ["host": "55.66.77.88", "port": 30002}
]
}
'''
data = json.loads(response_text)
print(data['proxies'][0]['host']) Ausgabe 11.22.33.44
Beachten Sie, dass es hier eine Grube gibt:json.loads() und json.load()Der Unterschied. Ersteres verarbeitet Zeichenketten, letzteres Datei-Objekte. Ein Kollege von mir hat die beiden schon einmal verwechselt und den Nachmittag damit verbracht, mit Luft zu operieren...
III. Ausnahmehandhabung Anti-Rollover-Leitfaden
Die drei häufigsten Überschlagstellen, die im wirklichen Leben vorkommen:
| Art des Fehlers | Verschreibung |
|---|---|
| JSONDecodeError | Prüfen Sie zunächst das Datenformat mit json.dumps() |
| KeyError | Verwenden Sie die Methode get(), anstatt den Schlüsselwert direkt abzurufen |
| TypeError | Überprüfen Sie, ob die Datentypen übereinstimmen |
Nennen Sie ein Beispiel für lebenserhaltenden Code:
versuchen.
erste_ip = proxy_list[0].get('host') if proxy_list else None
erste_ip = proxy_list[0].get('host') if proxy_list else None
except Exception as e.
print(f "Rollover! Fehlerursache: {str(e)}")
Viertens: Die praktischen Fähigkeiten des Proxy IP
In Verbindung mit ipipgo wird empfohlen, dass der Request-Header die OptionAutorisierung. Hier ein kleiner Tipp: Ihre API unterstützt die gleichzeitige Rückgabe mehrerer Protokolltypen; denken Sie daran, das gewünschte Protokoll in den Parametern anzugeben.
Einfuhranträge
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()
Achten Sie auf den Statuscode der Antwort, denn manchmal können Netzschwankungen dazu führen, dass die Anfrage fehlschlägt. Es wird empfohlen, einen Wiederholungsmechanismus in den Code aufzunehmen, wie einen Airbag für das Programm.
V. Häufig gestellte Fragen QA
F: Warum schlägt meine JSON-Extraktion immer fehl?
A: 80 % des Datenformats sind fehlerhaft. Drucken Sie zunächst mit print() die Originaldaten aus, und verwenden Sie dann das Online-JSON-Validierungstool, um die
F: Braucht die Proxy-IP von ipipgo eine besondere Behandlung?
A: Ihre API gibt ein Standard-JSON-Format zurück, verarbeiten Sie es einfach auf die übliche Weise. Achten Sie auf die effektive Länge jeder IP, es wird empfohlen, sie regelmäßig zu aktualisieren!
F: Welches Paket hat das beste Preis-Leistungs-Verhältnis?
A: Crawler Geschäft mit dynamischen Wohn (Standard) auf der Linie, 7,67 Yuan / GB Preis ist erschwinglich genug. Brauchen feste IP-Geschäft und dann prüfen, statische Wohn-Pakete
VI. Austausch von Erfahrungen zur Vermeidung von Fallstricken
Ein paar letzte blutige Lektionen:
1. eval() nicht direkt zum Parsen von JSON verwenden, da es Sicherheitsrisiken gibt
2 Beim Umgang mit verschachtelten Daten wird empfohlen, diejsonpath-ngDie Bibliothek ist unkomplizierter
3. überprüfen Sie regelmäßig die API-Dokumentation von ipipgo, manchmal wird das Parameterformat angepasst
4 Denken Sie daran, bei der Stapelverarbeitung eine Zeitüberschreitung einzustellen, um zu verhindern, dass das Programm stecken bleibt.
Wenn Sie mit einem Unternehmen zu tun haben, das viele Proxy-IPs benötigt, können Sie einfach den technischen Support von ipipgo nach einem Beispielcode fragen. Die Lösungen, die sie geben, sind viel zuverlässiger als die Platzhalter, die Sie online finden, fragen Sie mich nicht, woher ich das weiß...

