Les ein CSV gjennom ein proxy med pandas og Requests
Hent ein CSV med ein konfigurert Requests-transport, kontroller HTTP-resultatet og gje pandas ein bytebuffer for parsing.
Når HTTP-ruta krev eksplisitt proxykontroll, hent CSV-en først og lat pandas handsame byta som kjem:
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 tek seg av transporten; HTTP-proxylista leverer kandidatar for endepunkt til ei offentleg HTTP-rute. pandas får eit filliknande objekt og brukar dei vanlege vala sine for skiljeteikn, kolonnar, koding og datatypar.
Å kontrollere HTTP-resultatet før parsing hindrar at ein tydeleg HTTP-feiltekst blir handsama som ein tabell. Sjå også etter uventa innhald: ei innloggings- eller policyside kan returnere 200 og framleis vere HTML i staden for den førespurde CSV-en.
For HTTP-URL-ar blir storage_options til read_csv sende vidare som førespurnadshovud. Det grensesnittet er ikkje ei proxies-tilordning i Requests-stil.
Ein buffer har ikkje eit arkivfilnamn som kan styre komprimeringsutleiinga. Oppgje compression når nyttelasta som blir henta krev det. Same hent-først-oppsett fungerer med read_excel og ein bytebuffer, med reknearkmotoren som passar til formatet.
Dette dømet held heile svaret i minnet. For ein stor eksport, straum det til ei styrt lokal fil og parse den fila, med chunking der dataarbeidsflyten støttar det.