Ler un CSV a través dun proxy con pandas e Requests
Obteña un CSV cun transporte de Requests configurado, comprobe o resultado HTTP e entregue a pandas un búfer de bytes para analizar.
Cando a ruta HTTP necesita control explícito do proxy, obteña primeiro o CSV e deixe que pandas xestione os 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 encárgase do transporte; a lista de proxies HTTP fornece candidatos de punto final para unha ruta HTTP pública. pandas recibe un obxecto semellante a un ficheiro e aplica as súas opcións habituais de delimitador, columnas, codificación e tipos de datos.
Comprobar o resultado HTTP antes de analizar evita tratar como táboa un corpo de erro HTTP evidente. Revise tamén o contido inesperado: unha páxina de inicio de sesión ou de políticas pode devolver 200 e seguir sendo HTML en lugar do CSV solicitado.
Nas URL HTTP, os storage_options de read_csv envíanse como cabeceiras da solicitude. Esa interface non é unha asignación de proxies ao estilo de Requests.
Un búfer non ten nome de ficheiro de arquivo que guíe a inferencia de compresión. Especifique compression cando a carga obtida o requira. A mesma disposición de obter primeiro funciona con read_excel e un búfer de bytes, co motor de folla de cálculo axeitado a ese formato.
Este exemplo mantén toda a resposta en memoria. Para unha exportación grande, transmítaa a un ficheiro local xestionado e analice ese ficheiro, con fragmentación cando o fluxo de traballo de datos o permita.