Les en CSV gjennom en proxy med pandas og Requests
Hent en CSV med en konfigurert Requests-transport, kontroller HTTP-resultatet og gi pandas en bytebuffer for parsing.
Når HTTP-ruten krever eksplisitt proxykontroll, hent CSV-en først og la pandas håndtere bytene som kommer:
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 håndterer transporten; HTTP-proxylisten leverer kandidater for endepunkter til en offentlig HTTP-rute. pandas mottar et fillignende objekt og bruker sine vanlige valg for skilletegn, kolonner, koding og datatyper.
Å kontrollere HTTP-resultatet før parsing hindrer at en tydelig HTTP-feilmelding behandles som en tabell. Se også etter uventet innhold: en innloggings- eller policyside kan returnere 200 og fortsatt være HTML i stedet for den etterspurte CSV-en.
For HTTP-URL-er videresendes storage_options til read_csv som forespørselsheadere. Det grensesnittet er ikke en proxies-tilordning i Requests-stil.
En buffer har ikke et arkivfilnavn som kan styre komprimeringsutledningen. Angi compression når nyttelasten som hentes krever det. Samme hent-først-oppsett fungerer med read_excel og en bytebuffer, med regnearkmotoren som passer til formatet.
Dette eksempelet holder hele svaret i minnet. For en stor eksport, strøm den til en administrert lokal fil og parse den filen, med chunking der dataarbeidsflyten støtter det.