Čitanje CSV-a kroz proxy pomoću pandas i Requests
Dohvatite CSV konfiguriranim Requests transportom, provjerite HTTP rezultat i dajte pandasu bajtni bafer za parsiranje.
Kada HTTP ruta zahtijeva izričitu kontrolu proxyja, prvo dohvatite CSV i prepustite pandasu 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 toč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 Requestsa.
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.