Quando a rota HTTP exige controlo explícito do proxy, obtenha primeiro o CSV e deixe o pandas tratar dos bytes resultantes:

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

O proxy trata do transporte; a lista de proxies HTTP fornece candidatos a endpoint para uma rota HTTP pública. O pandas recebe um objeto semelhante a ficheiro e aplica as suas opções habituais de delimitador, colunas, codificação e tipos de dados.

Verificar o resultado HTTP antes da análise evita tratar como tabela um corpo de erro HTTP evidente. Verifique também conteúdo inesperado: uma página de início de sessão ou de políticas pode devolver 200 e continuar a ser HTML em vez do CSV pedido.

Nos URL HTTP, os storage_options do read_csv são encaminhados como cabeçalhos do pedido. Essa interface não é um mapeamento de proxies ao estilo do Requests.

Um buffer não tem nome de ficheiro de arquivo que oriente a inferência de compressão. Especifique compression quando a carga obtida o exigir. A mesma disposição de obter primeiro funciona com read_excel e um buffer de bytes, com o motor de folha de cálculo adequado a esse formato.

Este exemplo mantém toda a resposta em memória. Para uma exportação grande, transmita-a para um ficheiro local gerido e analise esse ficheiro, com divisão em blocos onde o fluxo de dados o permitir.

Artigos relacionados