Čítanie CSV cez proxy s pandas a Requests
Stiahnite CSV nakonfigurovaným transportom Requests, skontrolujte výsledok HTTP a odovzdajte pandas bajtový buffer na parsovanie.
Keď HTTP trasa vyžaduje výslovné riadenie proxy, najprv stiahnite CSV a nechajte pandas spracovať výsledné bajty:
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 zabezpečuje transport; zoznam HTTP proxy dodáva kandidátov koncových bodov pre verejnú HTTP trasu. pandas dostane objekt podobný súboru a použije svoje obvyklé možnosti pre oddeľovač, stĺpce, kódovanie a dátové typy.
Kontrola výsledku HTTP pred parsovaním zabráni tomu, aby sa zrejmé telo HTTP chyby považovalo za tabuľku. Prezrite si aj nečakaný obsah: prihlasovacia alebo zásadová stránka môže vrátiť 200 a napriek tomu byť HTML namiesto požadovaného CSV.
Pri HTTP URL sa storage_options read_csv odovzdávajú ako hlavičky požiadavky. Toto rozhranie nie je mapovanie proxies v štýle Requests.
Buffer nemá názov archívu, ktorý by riadil odhad kompresie. Určte compression, keď to získaný obsah vyžaduje. Rovnaké usporiadanie „najprv stiahnuť“ funguje s read_excel a bajtovým bufferom, s tabuľkovým enginom vhodným pre daný formát.
Tento príklad drží celú odpoveď v pamäti. Pri veľkom exporte presmerujte ho do spravovaného lokálneho súboru a ten súbor parsujte, s delením na časti tam, kde to dátový workflow podporuje.