Quando la rotta HTTP richiede un controllo esplicito del proxy, recuperate prima il CSV e lasciate che pandas gestisca i byte risultanti:

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')

Il proxy gestisce il trasporto; il elenco di proxy HTTP fornisce candidati endpoint per una rotta HTTP pubblica. pandas riceve un oggetto simile a un file e applica le sue consuete opzioni di delimitatore, colonne, codifica e tipi di dati.

Verificare il risultato HTTP prima dell'analisi evita di trattare come tabella un corpo di errore HTTP evidente. Esaminate anche i contenuti inattesi: una pagina di accesso o di policy può restituire 200 ed essere comunque HTML invece del CSV richiesto.

Per gli URL HTTP, gli storage_options di read_csv vengono inoltrati come intestazioni della richiesta. Quell'interfaccia non è una mappatura proxies in stile Requests.

Un buffer non ha un nome di file di archivio che guidi l'inferenza della compressione. Specificate compression quando il payload recuperato lo richiede. La stessa impostazione "recupera prima" funziona con read_excel e un buffer di byte, con il motore di fogli di calcolo adatto a quel formato.

Questo esempio mantiene l'intera risposta in memoria. Per un'esportazione di grandi dimensioni, trasmettetela in un file locale gestito e analizzate quel file, con suddivisione in blocchi dove il flusso di lavoro dei dati lo consente.

Articoli correlati