Читање 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 добива објект наликувачки на датотека и ги применува своите вообичаени опции за разделувач, колони, кодирање и типови на податоци.
Проверката на HTTP резултатот пред парсирање спречува очигледно тело на HTTP грешка да се третира како табела. Прегледајте и неочекувана содржина: страница за најава или политика може да врати 200 и сепак да е HTML наместо бараниот CSV.
За HTTP URL-а, storage_options на read_csv се препраќаат како заглавија на барањето. Тоа интерфејс не е proxies мапирање во стил на Requests.
Баферот нема име на архива што ќе го води заклучокот за компресија. Наведете compression кога преземениот товар го бара тоа. Истиот распоред „прво преземи“ работи со read_excel и бајтен бафер, со соодветниот двигател за табели за тој формат.
Овој пример го држи целиот одговор во меморија. За голем извоз, пренесете го во управувана локална датотека и парсирајте ја таа датотека, со делење на делови каде што работниот тек на податоци го поддржува.