Lorsque la route HTTP exige un contrôle explicite du proxy, récupérez d'abord le CSV et laissez pandas traiter les octets obtenus :

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

Le proxy assure le transport ; la liste de proxys HTTP fournit des candidats de point de terminaison pour une route HTTP publique. pandas reçoit un objet de type fichier et applique ses options habituelles de séparateur, de colonnes, d'encodage et de types de données.

Vérifier le résultat HTTP avant l'analyse évite de traiter comme un tableau un corps d'erreur HTTP évident. Examinez aussi le contenu inattendu : une page de connexion ou de politique peut renvoyer 200 et rester du HTML au lieu du CSV demandé.

Pour les URL HTTP, les storage_options de read_csv sont transmis comme en-têtes de requête. Cette interface n'est pas un mappage proxies de style Requests.

Un tampon n'a pas de nom de fichier d'archive pour guider la déduction de compression. Spécifiez compression lorsque la charge utile récupérée l'exige. La même disposition « récupérer d'abord » fonctionne avec read_excel et un tampon d'octets, avec le moteur de tableur adapté à ce format.

Cet exemple conserve toute la réponse en mémoire. Pour un export volumineux, diffusez-le vers un fichier local géré et analysez ce fichier, avec un découpage par blocs lorsque le flux de données le permet.

Articles similaires