
Grundlegende Python-Operationen zur Verarbeitung von JSON-Dateien
Bei Netzwerkanfragen haben wir es oft mit JSON-Daten zu tun. Wenn wir z. B. die Anforderungsbibliothek verwenden, um die Schnittstellendaten des Proxy-IP-Dienstanbieters zu erhalten, ist die Rückgabe grundsätzlich im JSON-Format. Zum Beispiel ist die API-Antwort von ipipgo wie folgt strukturiert:
json importieren
Geben Sie vor, dass dies die von ipipgo erhaltenen Antwortdaten sind
proxy_data = '''
{
"status": "erfolgreich",
"data": [
{"ip": "112.95.208.11", "port": 8000}, {"ip": "183.125.90", "port": 8000}, [
{"ip": "183.32.125.90", "port": 8080}
]
}
'''
String zu Dictionary
parsed_data = json.loads(proxy_data)
print(parsed_data['data'][0]['ip']) Ausgabe 112.95.208.11
Hier ist ein einfacher Platz, um eine Grube anzulegen:Die json-Bibliothek konvertiert Zahlen standardmäßig in int.. Zum Beispiel wird die Portnummer 8000 als Ganzzahl verarbeitet, aber einige Szenarien können das String-Format erfordern. Dieses Mal kann eine Typkonvertierung hinzugefügt werden: str(parsed_data['data'][0]['port'])
Praktische Tipps für Proxy-IP-Szenarien
Wenn Sie Proxy-IPs in großen Mengen verwalten müssen, ist es empfehlenswert, die IP-Liste in einer lokalen Datei zu speichern. Speichern Sie zum Beispiel die von ipipgo extrahierten Proxys als proxies.json:
json importieren
proxy_list = [
{"http": "http://112.95.208.11:8000"},
{"http": "http://183.32.125.90:8080"}
]
Schreiben Sie die Datei mit einem Einrückungsparameter, um sie besser lesbar zu machen
with open('proxies.json', 'w') as f.
json.dump(proxy_list, f, indent=2)
Achten Sie beim Lesen auf Kodierungsprobleme, insbesondere unter Windows:
with open('proxies.json', 'r', encoding='utf-8') as f.
proxies = json.load(f)
Fortgeschrittenes Spiel mit dynamischen Vermittlungsagenten
In Kombination mit der automatischen IP-Wechselfunktion von ipipgo erhalten Sie ein intelligentes Vermittlungssystem. Demonstrieren Sie hier ein Polling-Schema:
zufällig importieren
Anfragen importieren
with open('proxies.json') as f.
ip_pool = json.load(f)
def get_random_proxy(): return random.choice(ip_pool)
return random.choice(ip_pool)
Anfragen mit Proxy
response = requests.get(
'https://目标网站', proxies=get_random_proxy(), proxies=get_random_proxy()
proxies=get_random_proxy(), proxies=get_random_proxy(),
timeout=5
)
Konzentrierte Aufmerksamkeit:Denken Sie daran, Ausnahmebehandlung in den Code hinzufügen, begegnen Ausfall IP rechtzeitig aus der Liste der Beseitigung. ipipgo Überlebensrate kann 99% erreichen, als die selbst gebauten Proxy-Pool, um mehr zu sparen.
Häufig gestellte Fragen QA
Q:json.decoder.JSONDecodeError报错咋整?
A: 80% der Daten hat spezielle Symbole sind nicht escaped, oder die Schnittstelle zurück ist nicht Standard-JSON, können Sie print () zur Ausgabe der ursprünglichen Daten zu überprüfen, oder lädt () in der strengen = False Parameter
F: Was sollte ich tun, wenn meine Proxy-IP plötzlich ausfällt?
A: Wir empfehlen die Verwendung des dynamischen Tunnelproxys von ipipgo, der die IP-Adresse bei jeder Anfrage automatisch ändert. Wenn Sie einen herkömmlichen statischen Proxy verwenden, denken Sie daran, einen Wiederholungsmechanismus einzurichten:
von retrying importieren retry
@retry(stop_max_attempt_number=3)
def safe_request(url).
return requests.get(url, proxies=get_random_proxy())
F: Wie überprüfe ich, ob der Agent wirksam ist?
A: Über diese Prüfschnittstelle können Sie die aktuell verwendete Egress-IP einsehen:
requests.get('http://ipipgo.com/checkip', proxies=proxy).text
Tipps zur Optimierung der Effizienz
Bei großen Dateien sollten Sie nicht alle mit json.load() laden, sondern versuchen, sie Zeile für Zeile zu lesen:
ijson importieren
mit open('big_data.json') as f.
Parsen nur der Proxies im Datenfeld
proxies = ijson.items(f, 'data.item')
for proxy in proxies.
print(proxy['ip'])
Wenn Sie häufig Konfigurationen lesen und schreiben müssen, empfiehlt es sich, die von der API von ipipgo zurückgegebenen Daten direkt in der Datenbank zu speichern, was zuverlässiger ist als die Manipulation von Dateien. Vor allem, wenn Sie mehrere Projekte gleichzeitig verwalten müssen, werden die Vorteile der Datenbank offensichtlich sein.

