Læs en CSV gennem en proxy med pandas og Requests
Hent en CSV med en konfigureret Requests-transport, kontroller HTTP-resultatet, og giv pandas en bytebuffer til parsing.
Når HTTP-ruten kræver eksplicit proxykontrol, hentes CSV'en først, og pandas får lov at håndtere de resulterende 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')
Proxyen står for transporten; HTTP-proxylisten leverer kandidater til endpoints for en offentlig HTTP-rute. pandas modtager et fillignende objekt og anvender sine sædvanlige valg for afgrænsning, kolonner, kodning og datatyper.
Kontrol af HTTP-resultatet før parsing forhindrer, at en tydelig HTTP-fejltekst behandles som en tabel. Undersøg også uventet indhold: en login- eller politikside kan returnere 200 og stadig være HTML i stedet for den ønskede CSV.
For HTTP-URL'er videresendes read_csv's storage_options som anmodningsheadere. Det interface er ikke en proxies-mapping i Requests-stil.
En buffer har ikke et arkivfilnavn, der kan styre komprimeringsinferensen. Angiv compression, når den hentede payload kræver det. Samme hent-først-opstilling virker med read_excel og en bytebuffer, med den regnearksmotor, der passer til formatet.
Dette eksempel holder hele svaret i hukommelsen. Til en stor eksport, stream den til en administreret lokal fil og parse den fil, med chunking hvor dataarbejdsgangen understøtter det.