Läsa en CSV genom en proxy med pandas och Requests
Hämta en CSV med en konfigurerad Requests-transport, kontrollera HTTP-resultatet och ge pandas en bytebuffert för parsning.
När HTTP-rutten kräver explicit proxykontroll hämtar du CSV-filen först och låter pandas hantera byten 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')
Proxyn sköter transporten; HTTP-proxylistan tillhandahåller kandidater för slutpunkter för en offentlig HTTP-rutt. pandas tar emot ett filliknande objekt och tillämpar sina vanliga alternativ för avgränsare, kolumner, kodning och datatyper.
Att kontrollera HTTP-resultatet före parsning förhindrar att en tydlig HTTP-felkropp behandlas som en tabell. Granska också oväntat innehåll: en inloggnings- eller policysida kan returnera 200 och ändå vara HTML i stället för den begärda CSV-filen.
För HTTP-URL:er skickas read_csv:s storage_options vidare som begäranhuvuden. Det gränssnittet är inte en proxies-mappning i Requests-stil.
En buffert har inget arkivfilnamn som kan styra komprimeringsslutledningen. Ange compression när nyttolasten som hämtats kräver det. Samma hämta-först-upplägg fungerar med read_excel och en bytebuffert, med kalkylprogramsmotorn som passar formatet.
Det här exemplet håller hela svaret i minnet. För en stor export, strömma den till en hanterad lokal fil och parsa den filen, med chunkning där dataarbetsflödet stöder det.