Đọc CSV qua proxy bằng pandas và Requests
Tải CSV bằng một Requests transport đã cấu hình, kiểm tra kết quả HTTP, và đưa cho pandas một bộ đệm byte để phân tích.
Khi tuyến HTTP cần kiểm soát proxy rõ ràng, hãy tải CSV trước rồi để pandas xử lý các byte nhận được:
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')
Proxy đảm nhận việc truyền tải; danh sách proxy HTTP cung cấp các ứng viên điểm cuối cho một tuyến HTTP công khai. pandas nhận một đối tượng giống tệp và áp dụng các tùy chọn dấu phân cách, cột, mã hóa và kiểu dữ liệu thông thường.
Kiểm tra kết quả HTTP trước khi phân tích giúp tránh coi một thân lỗi HTTP rõ ràng là bảng. Cũng hãy xem nội dung bất thường: trang đăng nhập hoặc trang chính sách có thể trả về 200 mà vẫn là HTML thay vì CSV được yêu cầu.
Với URL HTTP, storage_options của read_csv được chuyển tiếp thành tiêu đề yêu cầu. Giao diện đó không phải ánh xạ proxies kiểu Requests.
Bộ đệm không có tên tệp lưu trữ để dẫn dắt suy luận nén. Chỉ định compression khi dữ liệu tải về yêu cầu. Cách bố trí tải-trước tương tự cũng hoạt động với read_excel và bộ đệm byte, dùng động cơ bảng tính phù hợp với định dạng đó.
Ví dụ này giữ toàn bộ phản hồi trong bộ nhớ. Với một lần xuất lớn, hãy truyền nó vào một tệp cục bộ được quản lý và phân tích tệp đó, chia thành từng khúc ở nơi quy trình dữ liệu hỗ trợ.