อ่าน CSV ผ่านพร็อกซีด้วย pandas และ Requests
ดึง CSV ด้วย Requests transport ที่กำหนดค่าไว้ ตรวจสอบผลลัพธ์ HTTP และมอบ byte buffer ให้ 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 ที่ร้องขอ
สำหรับ URL แบบ HTTP ค่า storage_options ของ read_csv จะถูกส่งต่อเป็นส่วนหัวของคำขอ อินเทอร์เฟซนั้นไม่ใช่การแมป proxies สไตล์ Requests
บัฟเฟอร์ไม่มีชื่อไฟล์เก็บถาวรเพื่อนำทางการอนุมานการบีบอัด ระบุ compression เมื่อเพย์โหลดที่ดึงมาต้องการ รูปแบบดึงก่อนแบบเดียวกันใช้ได้กับ read_excel และบัฟเฟอร์ไบต์ โดยใช้เอนจินสเปรดชีตที่เหมาะกับรูปแบบนั้น
ตัวอย่างนี้เก็บการตอบสนองทั้งหมดไว้ในหน่วยความจำ สำหรับการส่งออกขนาดใหญ่ สตรีมลงไฟล์โลคอลที่จัดการแล้ว และแยกวิเคราะห์ไฟล์นั้น โดยแบ่งเป็นส่วนๆ ในจุดที่เวิร์กโฟลว์ข้อมูลรองรับ