Когда маршруту 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 и байтовым буфером, используя подходящий для формата движок таблиц.

Этот пример держит весь ответ в памяти. Для большой выгрузки передайте его потоком в управляемый локальный файл и разбирайте этот файл, разбивая на части там, где это поддерживает рабочий процесс данных.

Похожие статьи