Коли 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 і байтовим буфером, використовуючи відповідний для формату рушій таблиць.

Цей приклад тримає всю відповідь у пам'яті. Для великого експорту передайте його потоком у керований локальний файл і розбирайте цей файл, поділяючи на частини там, де це підтримує робочий процес даних.

Схожі статті