IPIPGO IP-Proxy Python Parsing zu JSON: Tipps zur Handhabung von Wörterbuchdaten

Python Parsing zu JSON: Tipps zur Handhabung von Wörterbuchdaten

Wenn der Proxy-IP JSON-Daten getroffen, wie zu spielen, um nicht das Auto zu stürzen? Brüder in Crawling beschäftigt verstehen, dass jedes Mal aus dem Internet zurück zu holen Daten, neun Mal von zehn sind JSON-Format. Diese Sache sieht erfrischend, wirklich wollen, um mit mehr mühsam als der Abriss der russischen Nestpuppen. Vor allem bei der Verwendung von Proxy-IP, um Daten zu sammeln, oft angetroffen ...

Python Parsing zu JSON: Tipps zur Handhabung von Wörterbuchdaten

Wenn Proxy-IP in JSON-Daten abstürzt, wie spielen Sie es ohne Rollover?

Brüder in Crawling beschäftigt verstehen, dass jedes Mal aus dem Internet zurück zu holen Daten, neun Mal von zehn sind JSON-Format. Dieses Ding sieht erfrischend, wirklich wollen, um mit mehr lästig als der Abriss der russischen Schachtelpuppen beschäftigen. Vor allem bei der Verwendung von Proxy-IP, um Daten zu sammeln, oft angetroffenVerwirrende Datentypen, Kodierungsfehler, zu viel VerschachtelungDiese Motten. Letzte Woche lief ich in einen Fall: ipipgo dynamischen Wohn-Agenten, um die Daten eines E-Commerce-Unternehmens zu fangen, die Ergebnisse der Rückkehr des JSON-Preisfeld wird eine Zeichenfolge von "199 ″, einen Moment und dann ändern Sie die Anzahl der 199, fast an die Datenbank zu bekommen kollabiert.


json importieren
from requests import Session

 ipipgo-Proxy-Konfiguration (siehe hier für Highlights)
proxy_config = {
    "http": "http://user:pass@gateway.ipipgo.com:9020",
    "https": "http://user:pass@gateway.ipipgo.com:9020"
}

session = Sitzung()
Antwort = session.get('https://api.example.com/products', proxies=proxy_config)

 Hier verbirgt sich ein Minenfeld!
raw_data = json.loads(response.text)

Vier Tipps zur Zähmung von wildem JSON

Erster Zug:Datentyp Sweep. Verwenden Sie diese soo-Operation, wenn Sie auf Felder gemischten Typs treffen:


def clean_data(item).
     Preisfelder einheitlich in Gleitkomma umwandeln
    if 'Preis' in Artikel.
        try.
            item['preis'] = float(item['preis'])
        except.
            artikel['preis'] = 0.0
     Verschachtelte Wörterbuchkacheln
    if 'specs' in item.
        item.update(item.pop('specs'))
    Rückgabe item

safe_data = [clean_data(x) for x in raw_data['results']]

Zweiter Zug:Proxy-Ausnahmeerfassung Trifecta. Achten Sie besonders auf Netzschwankungen, wenn Sie den Proxy von ipipgo verwenden:

Art des Fehlers Reaktionsstrategie
VerbindungsFehler Automatische Umschaltung von Proxy-Knoten
Zeitüberschreitung Warten Sie 3-5 Sekunden, bevor Sie es erneut versuchen.
JSONDecodeError Aufzeichnung des Inhalts der ursprünglichen Antwort

Gruben und Rettungsschwimmer in der realen Welt

Sobald ich den kurzlebigen Proxy von ipipgo zur Datenerfassung verwendet habe, bin ich auf ein seltsames JSON gestoßen - Emoji-Emoticons im Schlüsselnamen! Dieses Mal verwenden Sie nicht die Standardbibliothek hart, auf dieses Programm:


demjson importieren
from charset_normalizer import detect

 Echte Kodierung erkennen
encoding = detect(response.content)['encoding']
dirty_json = response.content.decode(encoding, errors='replace')

 Parsen mit Triple-Bibliotheken
Daten = demjson.decode(dirty_json)

Vergessen Sie nicht, in der Kopfzeile der Anfrage Folgendes hinzuzufügen"Accept-Encoding": "Identität"Wenn Sie diese Website nutzen möchten, geben einige Websites komprimierte Daten zurück, die bei der Weiterleitung des Proxys durcheinander gebracht werden können.

QA-Zeit (ein Muss für Neulinge)

Q:Was soll ich tun, wenn ich weiterhin verstümmelte JSON mit Proxy-IP erhalte?
A: 80% der Übertragungen werden in der Mitte abgefangen, wir empfehlen: 1) prüfen Sie, ob das Verkehrspaket von ipipgo background aufgebraucht ist 2) fügen Sie "Connection": "keep-alive" in den Request-Header ein 3) erhöhen Sie den Timeout auf 10 Sekunden oder mehr

F: Was ist der Trick beim Umgang mit mehreren Schichten von verschachteltem JSON?
A: Mit jsonpath eine Handvoll Shuttles ist viel cooler als mehrere Schichten von for-Schleifen zu schreiben:


von jsonpath_ng importieren parse

expr = parse('$..Produkte[? (@.preis > 100)].sku')
matches = [match.value for match in expr.find(data)]

Der versteckte Spielverlauf von ipipgo

ihreFakturierer auf AbrufBesonders geeignet für den Umgang mit plötzlich anfallenden großen Datenmengen. Wenn Sie z.B. plötzlich eine 10G JSON-Logdatei parsen wollen, können Sie das tun:


import pandas as pd
from concurrent.futures import ThreadPoolExecutor

def parse_chunk(chunk).
    with ipipgo.create_session(duration='15min') as session.
        return pd.json_normalize(chunk)

 Verarbeitung großer Dateien in Chunks
results = []
with ThreadPoolExecutor(max_workers=5) as executor: for chunk in pd.read(chunk): return pd.json_normalize(chunk)
    for chunk in pd.read_json('bigfile.json', lines=True, chunksize=1000):
        results.append(executor.submit(parse_chunk, chunk))

Ein letzter Ratschlag: Achten Sie beim Umgang mit JSON darauf, dassSchemaprüfung vor dem ParsenWenn Sie den Proxy von ipipgo verwenden, können Sie mit der HEAD-Anfrage zuerst die Datenstruktur abfragen, um unnötigen Datenverkehr zu vermeiden. Begegnet ein schwieriges Problem, denken Sie daran, auf ihre Dokumente zu gehen, um über die "Nicht-Standard-JSON-Verarbeitung Leitfaden", lebensrettende Waffe drehen.

Dieser Artikel wurde ursprünglich von ipipgo veröffentlicht oder zusammengestellt.https://www.ipipgo.com/de/ipdaili/35952.html

Geschäftsszenario

Entdecken Sie weitere professionelle Dienstleistungslösungen

💡 Klicken Sie auf die Schaltfläche für weitere Einzelheiten zu den professionellen Dienstleistungen

Neue 10W+ U.S. Dynamic IPs Jahresendverkauf

Professioneller ausländischer Proxy-IP-Dienstleister-IPIPGO

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kontakt

Kontakt

13260757327

Online-Anfrage. QQ-Chat

E-Mail: hai.liu@xiaoxitech.com

Arbeitszeiten: Montag bis Freitag, 9:30-18:30 Uhr, Feiertage frei
WeChat folgen
Folgen Sie uns auf WeChat

Folgen Sie uns auf WeChat

Zurück zum Anfang
de_DEDeutsch