pandas మరియు Requests తో ప్రాక్సీ ద్వారా CSV చదవడం
కాన్ఫిగర్ చేసిన Requests ట్రాన్స్పోర్ట్తో CSV తీసుకురండి, దాని HTTP ఫలితాన్ని తనిఖీ చేయండి, మరియు pandas కు పార్సింగ్ కోసం బైట్ బఫర్ ఇవ్వండి.
HTTP మార్గానికి స్పష్టమైన ప్రాక్సీ నియంత్రణ అవసరమైనప్పుడు, మొదట CSV తీసుకురండి మరియు వచ్చిన బైట్లను pandas నిర్వహించనివ్వండి:
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')
ప్రాక్సీ రవాణాను నిర్వహిస్తుంది; HTTP ప్రాక్సీ జాబితా పబ్లిక్ HTTP మార్గానికి ఎండ్పాయింట్ అభ్యర్థులను అందిస్తుంది. pandas ఫైల్ లాంటి వస్తువును స్వీకరించి తన సాధారణ delimiter, column, encoding మరియు data-type ఎంపికలను వర్తిస్తుంది.
పార్సింగ్కు ముందు HTTP ఫలితాన్ని తనిఖీ చేయడం స్పష్టమైన HTTP లోపం బాడీని పట్టికగా పరిగణించడాన్ని నివారిస్తుంది. ఊహించని కంటెంట్ను కూడా పరిశీలించండి: లాగిన్ లేదా విధాన పేజీ 200 తిరిగి ఇచ్చినా అభ్యర్థించిన CSVకి బదులుగా HTML కావచ్చు.
HTTP URLల కోసం, read_csv యొక్క storage_options అభ్యర్థన హెడర్లుగా పంపబడతాయి. ఆ ఇంటర్ఫేస్ Requests శైలి proxies మ్యాపింగ్ కాదు.
బఫర్కు కంప్రెషన్ అంచనాను నడిపించే ఆర్కైవ్ ఫైల్నామం ఉండదు. తీసుకున్న పేలోడ్కు అవసరమైనప్పుడు compression పేర్కొనండి. అదే మొదట-తీసుకో వ్యవস্থ read_excel మరియు బైట్ బఫర్తో పనిచేస్తుంది, ఆ ఫార్మాట్కు సరిపోయే స్ప్రెడ్షీట్ ఇంజిన్ను ఉపయోగించి.
ఈ ఉదాహరణ మొత్తం ప్రతిస్పందనను మెమరీలో ఉంచుతుంది. పెద్ద ఎగుమతి కోసం, దాన్ని నిర్వహిత స్థానిక ఫైల్కు స్ట్రీమ్ చేయండి మరియు ఆ ఫైల్ను పార్స్ చేయండి, డేటా వర్క్ఫ్లో మద్దతిచ్చే చోట చంకింగ్ చేస్తూ.