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.

Relaterade artiklar