Eine CSV mit pandas und Requests über einen Proxy lesen
Rufen Sie eine CSV mit einem konfigurierten Requests-Transport ab, prüfen Sie das HTTP-Ergebnis und übergeben Sie pandas einen Byte-Puffer zum Parsen.
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.