Чытанне 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 атрымлівае аб'ект, падобны да файла, і прымяняе свае звычайныя параметры delimiter, слупкоў, кадавання і тыпаў даных.
Праверка выніку HTTP перад разборам не дазваляе прыняць відавочнае цела памылкі HTTP за табліцу. Таксама аглядзіце нечаканы змест: старонка ўваходу або палітыкі можа вярнуць 200 і ўсё роўна быць HTML замест запытанага CSV.
Для HTTP-URL storage_options read_csv перадаюцца як загалоўкі запыту. Гэты інтэрфейс не з'яўляецца адлюстраваннем proxies у стылі Requests.
Буфер не мае назвы архіва, якая кіравала б высновай пра сцісканне. Пазначце compression, калі гэта патрабуе атрыманая нагрузка. Тая ж схема «спачатку атрымаць» працуе з read_excel і буферам байтаў, выкарыстоўваючы рухавік табліц, адпаведны фармату.
Гэты прыклад трымае ўвесь адказ у памяці. Для вялікага экспарту перанясіце яго ў кіраваны лакальны файл і разбярыце гэты файл, з падзелам на часткі, дзе гэта падтрымлівае працоўны працэс.