Kada HTTP ruta zahtijeva izričitu kontrolu proxyja, prvo dohvatite CSV i prepustite pandas-u da obradi dobijene bajtove:

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')

Proxy preuzima transport; lista HTTP proxyja nudi kandidate za krajnje tačke javne HTTP rute. pandas prima objekt nalik datoteci i primjenjuje svoje uobičajene opcije za razdjelnik, kolone, kodiranje i tipove podataka.

Provjera HTTP rezultata prije parsiranja sprječava da se očito tijelo HTTP greške tretira kao tabela. Pregledajte i neočekivani sadržaj: stranica za prijavu ili pravila može vratiti 200 i dalje biti HTML umjesto traženog CSV-a.

Za HTTP URL-ove, storage_options read_csv prosljeđuju se kao zaglavlja zahtjeva. Taj interfejs nije proxies mapiranje u stilu Requests.

Bafer nema naziv arhive koji bi vodio zaključivanje o kompresiji. Navedite compression kada to zahtijeva dohvaćeni sadržaj. Isti pristup „prvo dohvati“ radi s read_excel i bajtnim baferom, uz odgovarajući motor za tabele za taj format.

Ovaj primjer drži cijeli odgovor u memoriji. Za veliki izvoz, prenesite ga u upravljanu lokalnu datoteku i parsirajte tu datoteku, s dijeljenjem na komade gdje tok podataka to podržava.

Povezani članci