Kai HTTP maršrutui reikia aiškaus tarpinio serverio valdymo, pirmiausia gaukite CSV ir leiskite pandas apdoroti gautus baitus:

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')

Tarpinis serveris atlieka perdavimą; HTTP tarpinių serverių sąrašas siūlo galinių taškų kandidatus viešam HTTP maršrutui. pandas gauna failą primenantį objektą ir taiko įprastas skiriamosios žymės, stulpelių, koduotės ir duomenų tipų parinktis.

HTTP rezultato patikrinimas prieš analizę neleidžia akivaizdaus HTTP klaidos turinio laikyti lentele. Patikrinkite ir netikėtą turinį: prisijungimo ar taisyklių puslapis gali grąžinti 200 ir vis tiek būti HTML, o ne prašomas CSV.

HTTP URL atveju read_csv storage_options perduodami kaip užklausos antraštės. Ši sąsaja nėra Requests stiliaus proxies susiejimas.

Buferis neturi archyvo failo pavadinimo, kuris nulemtų suspaudimo išvadą. Nurodykite compression, kai to reikalauja gautas turinys. Ta pati „pirmiausia gauti“ tvarka veikia su read_excel ir baitų buferiu, naudojant tam formatui tinkamą skaičiuoklės variklį.

Šis pavyzdys laiko visą atsakymą atmintyje. Dideliam eksportui perduokite jį į valdomą vietinį failą ir analizuokite tą failą, skaidydami dalimis ten, kur duomenų darbo eiga tai palaiko.

Susiję straipsniai