CSV olvasása proxy-n keresztül pandas és Requests használatával
Töltsön le egy CSV-t beállított Requests-transzporttal, ellenőrizze az HTTP-eredményt, és adjon a pandasnak egy bájtpuffert az elemzéshez.
Amikor az HTTP-útvonal kifejezett proxyvezérlést igényel, először töltse le a CSV-t, és hagyja, hogy a pandas kezelje a kapott bájtokat:
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')
A proxy végzi a szállítást; az HTTP-proxylista végpontjelölteket kínál egy nyilvános HTTP-útvonalhoz. A pandas fájlszerű objektumot kap, és alkalmazza szokásos elválasztó-, oszlop-, kódolási és adattípus-beállításait.
Az HTTP-eredmény elemzés előtti ellenőrzése megakadályozza, hogy egy nyilvánvaló HTTP-hibatörzset táblaként kezeljünk. Vizsgálja meg a váratlan tartalmat is: egy bejelentkező vagy irányelvoldal 200-at adhat vissza, és mégis HTML lehet a kért CSV helyett.
HTTP URL-ek esetén a read_csv storage_options beállításai kérésfejlécként kerülnek továbbításra. Ez az interfész nem Requests-stílusú proxies-leképezés.
A puffernek nincs archívfájl-neve, amely a tömörítés következtetését vezetné. Adja meg a compression értéket, ha a letöltött tartalom megköveteli. Ugyanez az előbb-letöltés elrendezés működik a read_excel-lel és egy bájtpufferrel, a formátumhoz illő táblázatkezelő-motorral.
Ez a példa a teljes választ a memóriában tartja. Nagy export esetén streamelje egy kezelt helyi fájlba, és azt a fájlt elemezze, darabolással ott, ahol az adatmunkafolyamat támogatja.