Читання 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-URL параметри storage_options read_csv передаються як заголовки запиту. Цей інтерфейс не є відображенням proxies у стилі Requests.
Буфер не має назви архівного файлу, яка б керувала висновком про стиснення. Укажіть compression, коли цього потребує отримане навантаження. Та сама схема «спершу отримати» працює з read_excel і байтовим буфером, використовуючи відповідний для формату рушій таблиць.
Цей приклад тримає всю відповідь у пам'яті. Для великого експорту передайте його потоком у керований локальний файл і розбирайте цей файл, поділяючи на частини там, де це підтримує робочий процес даних.