
Wenn Proxy-IP auf JSON-Daten trifft, macht Python alles richtig!
in der Datenerhebung des alten Eisen wissen, Proxy-IP-Service Rückkehr Daten aller Wahrscheinlichkeit nach sind JSON-Format. Heute spielen wir nicht falsch, direkt auf die trockenen Waren zu sagen, wie Python zu verwenden, um Sinn dieser Angelegenheit zu machen. Nehmen Sie ipipgo's API-Antwort, kehren sie zu den Proxy-IP-Informationen Struktur Diebe Normen, die Verarbeitung ist besonders glatt.
Erstens, die Abschaffung der Express-Analyse von Proxy-IP-Informationen
Der Erhalt der Antwortdaten vom Proxy-IP-Dienstanbieter ist wie der Empfang eines Pakets. Werfen wir einen Blick auf die typische Rückgabestruktur von ipipgo:
{
"Status": "erfolgreich", "Daten": [
"Daten": [
{
"ip": "123.123.123.123",
"port": 8000, "expire_time": { "expire_time": 00:00
"expire_time": "2024-03-01 12:00:00"
},
{
"ip": "124.124.124.124",
"port": "8001",
"expire_time": "2024-03-01 12:30:00"
}
]
}
Um mit dieser Struktur umzugehen, denken Sie an die drei Schritte:Bestätigung des Status → Extraktion der Daten → zyklische Verarbeitung. Sehen Sie sich diesen Code an:
json importieren
Antwort = requests.get('https://api.ipipgo.com/get_proxies')
result = json.loads(response.text)
if result['status'] == 'success': for proxy in result['data'].
print(f "Verfügbare Proxys: {proxy['ip']}:{proxy['port']}")
print(f "Gültigkeitsdauer: {proxy['expire_time']}")
else.
print("Nicht viel Glück heute, versuchen Sie es noch einmal an einer anderen Stelle")
Zweitens, die dynamische Konfiguration der Anfrageparameter des schwarzen
Manchmal ist es notwendig, Anforderungsparameter dynamisch zu generieren, je nach den verschiedenen Geschäftsszenarien. Um beispielsweise die Verfügbarkeit von Proxy-IPs im Batch-Verfahren zu testen, können Sie wie folgt vorgehen:
proxy_list = []
Holt 10 Proxy-IPs von ipipgo
params = {
"count": 10,
"Protokoll": "http",
"region": "Ost-China"
}
response = requests.get('https://api.ipipgo.com/generate', params=params)
proxies = json.loads(response.text)['proxies']
for p in proxies.
proxy_config = {
"http": f "http://{p['ip']}:{p['port']}",
"https": f "https://{p['ip']}:{p['port']}"
}
proxy_list.append(proxy_config)
Dadurch wird eine Liste von Proxy-Konfigurationen erstellt, die direkt auf Rotationsanfragen angewandt und auf Stabilität getestet werden können.
Drittens sollten Anomalien wie die Überprüfung des Wasserzählers behandelt werden
Der einfachste Weg, mit JSON umzugehen, besteht darin, die Daten falsch zu formatieren. Ich werde Ihnen einen Trick beibringen:
versuchen.
data = response.json()
except json.JSONDecodeError as e:: print(f "Parsing-Fehler!
print(f "Es gab einen Parsing-Fehler! Ort: Zeile {e.lineno}, Spalte {e.colno}.")
print("Ich schlage vor, zu prüfen: 1. ob der Antwort-Header application/json enthält 2. ob unvollständige Daten vorhanden sind")
Hier können Sie die Exception-Reporting-Schnittstelle von ipipgo aufrufen
requests.post('https://api.ipipgo.com/error_report', data=Antwort.text)
Auf diese Weise stürzt das Programm nicht ab, und der Dienstanbieter kann die Qualität verbessern - das Beste aus beiden Welten.
QA Time: Minenräumung bei häufig gestellten Fragen
Q:Was sollte ich tun, wenn die Proxy-IP, die ich erhalten habe, plötzlich nicht mehr funktioniert?
A: Schauen Sie sich zuerst das Feld für die Ablaufzeit an, der ipipgo-Proxy ist standardmäßig auf 1 Stunde Aktualisierung eingestellt. Es wird empfohlen, eine zeitgesteuerte Aufgabe einzurichten, um eine neue IP 15 Minuten im Voraus zu erhalten
F: Was soll ich tun, wenn im zurückgegebenen JSON seltsame Sonderzeichen vorkommen?
A: 80% ist ein Kodierungsproblem, versuchen Sie es so zu handhaben:
response.encoding = 'utf-8-sig'
data = json.loads(response.text)
F: Was sollte ich tun, wenn ich Daten von mehreren Proxy-Dienstanbietern gleichzeitig verarbeiten muss?
A: Es wird empfohlen, das Datenformat zu vereinheitlichen, z. B. eine Konvertierungsschicht für die Antwortdaten von ipipgo einzurichten:
def format_proxy(data).
zurück {
"host": data['ip'],
"Hafen": str(data['port']),
"Quelle": "ipipgo"
}
Abschließend möchte ich Ihnen einen echten Tipp geben: Wenn Sie einen Proxy-Dienst für eine lange Zeit nutzen, sollten Sie direkt zum Paket von ipipgo wechseln, um Ihr Herz zu retten. Die Benutzeroberfläche ist nicht nur reaktionsschnell, sondern auch der technische Support ist zuverlässig, im Gegensatz zu einigen anderen Anbietern, die nicht mehr erreichbar sind. Der Schlüssel ist, dass ihre IP-Pool häufig aktualisiert wird, im Grunde wird nicht eine große Anzahl von ungültigen Fällen begegnen.

