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

Този пример държи целия отговор в паметта. За голям експорт го насочете към управляван локален файл и анализирайте този файл, с разделяне на части, където работният поток позволява.

Подобни статии