Wenn die HTTP-Route eine ausdrückliche Proxy-Kontrolle verlangt, holen Sie die CSV zuerst ab und überlassen Sie pandas die resultierenden Bytes:

from io import BytesIO
import pandas as pd
import requests

route = {
    'http': 'http://proxy.example:8080',
    'https': 'http://proxy.example:8080',
}
with requests.get(
    'https://data.example/report.csv',
    proxies=route,
    timeout=(5, 30),
) as response:
    response.raise_for_status()
    frame = pd.read_csv(BytesIO(response.content), encoding='utf-8')

Der Proxy übernimmt den Transport; die HTTP-Proxy-Liste liefert Endpunktkandidaten für eine öffentliche HTTP-Route. pandas erhält ein dateiähnliches Objekt und wendet seine üblichen Optionen für Trennzeichen, Spalten, Kodierung und Datentypen an.

Die HTTP-Antwort vor dem Parsen zu prüfen, verhindert, dass ein offensichtlicher HTTP-Fehlerinhalt als Tabelle behandelt wird. Prüfen Sie auch unerwartete Inhalte: Eine Anmelde- oder Richtlinienseite kann 200 zurückgeben und trotzdem HTML statt der angeforderten CSV sein.

Bei HTTP-URLs werden die storage_options von read_csv als Anfrage-Header weitergegeben. Diese Schnittstelle ist keine Proxies-Zuordnung im Requests-Stil.

Ein Puffer hat keinen Archivdateinamen, der die Komprimierungserkennung leiten könnte. Geben Sie compression an, wenn die abgerufene Nutzlast es erfordert. Dieselbe Reihenfolge „zuerst abrufen“ funktioniert mit read_excel und einem Byte-Puffer, mit der für das Format passenden Tabellenkalkulations-Engine.

Dieses Beispiel hält die gesamte Antwort im Speicher. Für einen großen Export streamen Sie ihn in eine verwaltete lokale Datei und parsen Sie diese Datei, mit Chunking, wo der Datenworkflow es unterstützt.

Ähnliche Artikel