Leximi i një CSV përmes një proxy me pandas dhe Requests
Merrni një CSV me një transport Requests të konfiguruar, kontrolloni rezultatin HTTP dhe jepini pandas një bufer bajtesh për analizë.
Kur rruga HTTP kërkon kontroll të qartë të proxysë, merrni së pari CSV-në dhe lërini pandas të trajtojë bajtët që vijnë:
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')
Proxyja kujdeset për transportin; lista e proxy-ve HTTP ofron kandidatë për pika fundore për një rrugë HTTP publike. pandas merr një objekt si skedar dhe zbaton opsionet e tij të zakonshme për ndarësin, kolonat, kodimin dhe llojet e të dhënave.
Kontrolli i rezultatit HTTP përpara analizës parandalon trajtimin e një trupi të qartë gabimi HTTP si tabelë. Shikoni edhe përmbajtje të papritur: një faqe hyrjeje ose politike mund të kthejë 200 dhe të jetë ende HTML në vend të CSV-së së kërkuar.
Për URL-të HTTP, storage_options të read_csv përçohen si tituj kërkese. Ai ndërfaqe nuk është një hartë proxies në stilin e Requests.
Një bufer nuk ka emër skedari arkivi që të udhëheqë konkluzionin për kompresimin. Specifikoni compression kur ngarkesa e marrë e kërkon. I njëjti rregullim "merr së pari" funksionon me read_excel dhe një bufer bajtesh, me motorrin e fletëllogaritjes që i përshtatet atij formati.
Ky shembull mban të gjithë përgjigjen në memorie. Për një eksport të madh, transmetojeni në një skedar lokal të menaxhuar dhe analizoni atë skedar, me ndarje në pjesë aty ku rrjedha e punës së të dhënave e mbështet.