CSV lasīšana caur starpniekserveri ar pandas un Requests
Iegūstiet CSV ar konfigurētu Requests transportu, pārbaudiet HTTP rezultātu un nododiet pandas baitu buferi parsēšanai.
Ja HTTP maršrutam nepieciešama skaidra starpniekservera kontrole, vispirms iegūstiet CSV un ļaujiet pandas apstrādāt iegūtos baitus:
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')
Starpniekserveris nodrošina pārsūtīšanu; HTTP starpniekserveru saraksts piedāvā galapunktu kandidātus publiskam HTTP maršrutam. pandas saņem failam līdzīgu objektu un piemēro savas ierastās atdalītāja, kolonnu, kodējuma un datu tipu opcijas.
HTTP rezultāta pārbaude pirms parsēšanas neļauj acīmredzamu HTTP kļūdas saturu uzskatīt par tabulu. Pārbaudiet arī negaidītu saturu: pieteikšanās vai politikas lapa var atgriezt 200 un joprojām būt HTML, nevis pieprasītais CSV.
HTTP URL gadījumā read_csv storage_options tiek nodotas kā pieprasījuma galvenes. Šī saskarne nav Requests stila proxies kartējums.
Buferim nav arhīva faila nosaukuma, kas vadītu saspiešanas secinājumu. Norādiet compression, ja to prasa iegūtā kravne. Tā pati „vispirms iegūt“ kārtība darbojas ar read_excel un baitu buferi, izmantojot attiecīgajam formātam piemērotu izklājlapu dzinēju.
Šis piemērs glabā visu atbildi atmiņā. Lielam eksportam straumējiet to pārvaldītā vietējā failā un parsējiet šo failu, sadalot daļās tur, kur datu darbplūsma to atbalsta.