קריאת CSV דרך פרוקסי עם pandas ו-Requests
אחזרו CSV באמצעות תעבורת Requests מוגדרת, בדקו את תוצאת ה-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 מקבל אובייקט דמוי קובץ ומחיל את אפשרויות ברירת המחדל שלו למפריד, לעמודות, לקידוד ולסוגי נתונים.
בדיקת תוצאת ה-HTTP לפני הניתוח מונעת התייחסות לגוף שגיאת HTTP ברור כאל טבלה. בדקו גם תוכן בלתי צפוי: עמוד התחברות או מדיניות יכול להחזיר 200 ועדיין להיות HTML במקום ה-CSV המבוקש.
עבור כתובות HTTP, ה-storage_options של read_csv מועברים ככותרות בקשה. ממשק זה אינו מיפוי proxies בסגנון Requests.
למאגר אין שם קובץ ארכיון שיכוון את הסקת הדחיסה. ציינו compression כאשר המטען שנאחזר דורש זאת. אותה גישה של אחזור-תחילה עובדת עם read_excel ומאגר בתים, עם מנוע הגיליון המתאים לפורמט הזה.
דוגמה זו שומרת את כל התגובה בזיכרון. לייצוא גדול, העבירו אותה בזרימה לקובץ מקומי מנוהל ונתחו את הקובץ הזה, עם פיצול לחלקים היכן שזרימת העבודה של הנתונים תומכת בכך.