Калі 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 атрымлівае аб'ект, падобны да файла, і прымяняе свае звычайныя параметры delimiter, слупкоў, кадавання і тыпаў даных.

Праверка выніку HTTP перад разборам не дазваляе прыняць відавочнае цела памылкі HTTP за табліцу. Таксама аглядзіце нечаканы змест: старонка ўваходу або палітыкі можа вярнуць 200 і ўсё роўна быць HTML замест запытанага CSV.

Для HTTP-URL storage_options read_csv перадаюцца як загалоўкі запыту. Гэты інтэрфейс не з'яўляецца адлюстраваннем proxies у стылі Requests.

Буфер не мае назвы архіва, якая кіравала б высновай пра сцісканне. Пазначце compression, калі гэта патрабуе атрыманая нагрузка. Тая ж схема «спачатку атрымаць» працуе з read_excel і буферам байтаў, выкарыстоўваючы рухавік табліц, адпаведны фармату.

Гэты прыклад трымае ўвесь адказ у памяці. Для вялікага экспарту перанясіце яго ў кіраваны лакальны файл і разбярыце гэты файл, з падзелам на часткі, дзе гэта падтрымлівае працоўны працэс.

Падобныя артыкулы