
Wie funktioniert das json.get() in Python überhaupt?
Crawler sollten diese Situation angetroffen haben: von der Proxy-Service-Provider, um eine json-Format IP-Konfiguration zu erhalten, die Ergebnisse der Toten nicht ziehen können, die wichtigsten Informationen. Zu diesem Zeitpunktjson.get()Das ist Ihre rettende Gnade! Nehmen wir die Antwort der Proxy-Schnittstelle von ipipgo als Beispiel:
json importieren
response = '{"proxy_list": [{"ip": "1.1.1.1", "port":8000},{"ip": "2.2.2.2", "port":8080}], "status":200}'
data = json.loads(response)
Das direkte Auslesen der Daten kann überschlagen werden
first_ip = data['proxy_list'][0]['ip'] Im Falle von Null-Daten wird ein Fehler gemeldet
Der sichere Weg dazu
first_ip = data.get('proxy_list', [{}])[0].get('ip', 'default IP')
Sehen Sie? Die Verwendung von get() ist wie eine kugelsichere Weste für Ihren Code, damit Sie nicht auf der Stelle abstürzen, selbst wenn Sie auf ein fehlendes Feld stoßen. Vor allem, wenn Sie mit Rückgaben von Drittanbietern wie Proxy-IPs zu tun haben, wird die Schnittstelle eines Tages ihre Struktur ändern.
Proxy-IP-Konfiguration
Nehmen wir die Proxy-Konfiguration von ipipgo als Beispiel, die von der Schnittstelle zurückgegebene json-Datei sieht wie folgt aus:
{
"proxy": {
"http": "socks5://user:pass@1.1.1.1:8888",
"https": "socks5://user:pass@1.1.1.1:8888"
},
"expire_time": "2024-03-20 12:00:00"
}
Hier kommt die Schönheit der Verwendung von get() ins Spiel:
expire = data.get('proxy', {}).get('expire_time', 'unknown time')
Doppelte Schutzschicht! Selbst wenn das gesamte Proxy-Feld nicht existiert, wird KeyError nicht gemeldet. Dies ist ein Lebensretter für Crawler, die 24/7 laufen müssen.
Ärger auf dem Feld
1. Schriftumwandlung für mehr SicherheitDie von ipipgo zurückgegebene Portnummer kann manchmal vom Typ String sein, denken Sie daran, sie zu konvertieren!
port = int(data.get('port', '0')) verhindert die Ermittlung von Nullwerten
2. Nicht zu verwechseln mit verschachtelten WörterbüchernWenn Sie auf mehrere Schichten von verschachtelten Proxy-Konfigurationen stoßen, können Sie mit der Verschachtelung spielen
auth = data.get('auth', {}).get('username', 'anonymous')
3. Standardwerte zum BrainstormingSie können den alternativen Proxy automatisch umschalten, wenn Sie die Standard-IP einstellen.
aktuelle_ip = data.get('aktuelle_ip') oder ipipgo.get_backup_ip()
QA-Zeit (ein Muss für Neulinge)
F: Warum nehmen wir nicht einfach den Schlüsselwert?
A: So wie Sie zum Kurierschrank gehen, um das Paket abzuholen, kann die direkte Eingabe des Abholcodes (in Klammern) dazu führen, dass der Schrank leer ist. Verwenden Sie get() ist gleichbedeutend mit ersten drücken Sie die Abholung Code, wenn es kein Paket wird automatisch geben Sie einen alternativen Kurier (Standardwert)
F: Was sollte ich tun, wenn die Proxy-IP von ipipgo plötzlich keine Verbindung mehr herstellt?
A: Es wird empfohlen, get() mit Ausnahmeabfangung zu verwenden:
versuchen.
ip = data['proxy']['http']
except KeyError: ip = ipipgo.get_new_ip()
ip = ipipgo.get_new_ip() Automatisch neue IP erhalten
F: Benötigen Sie echte Namen für Ihre Proxy-IP?
A: ipipgo hält sich strikt an die Cybersicherheitsgesetze und alle Proxy-Dienste sind verpflichtet, dieUnternehmensauthentifizierung mit echtem NamenIch bin sicher, dass Sie ihn benutzen können, ohne auf Minen zu treten.
Parameter-Vergleichstabelle
| Methodologien | Blickwinkel | Nachteile |
|---|---|---|
| data['key'] | Direkt und schnell | Stürzt ab, wenn er auf einen nicht existierenden Schlüssel stößt |
| data.get('Schlüssel') | sicher und stabil | Die Logik der Standardwerte muss gehandhabt werden |
Ein letzter Tipp: Wenn Sie den Proxy-Dienst von ipipgo benutzen, denken Sie daran, dass die Rückgabefelder der Schnittstellen alleKleinschreibung (Buchstaben)Schreiben Sie nicht 'Proxy' als 'Proxy', Python unterscheidet Groß- und Kleinschreibung! Wenn Sie auf Probleme stoßen, ihre technischen Kundendienst Reaktion Geschwindigkeit bar, persönlich Test 10:00 Uhr kann auch eine zweite zurück auf die Arbeit zu bestellen.

