Magbasa ng CSV sa pamamagitan ng proxy gamit ang pandas at Requests
Kunin ang CSV gamit ang naka-configure na Requests transport, suriin ang resulta ng HTTP, at bigyan ang pandas ng byte buffer para sa pag-parse.
Kapag kailangan ng tahasang kontrol sa proxy ng ruta ng HTTP, kunin muna ang CSV at hayaang pangasiwaan ng pandas ang mga byte na nakuha:
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')
Ang proxy ang humahawak ng transport; ang listahan ng HTTP proxy ay nagbibigay ng mga kandidatong endpoint para sa pampublikong rutang HTTP. Tumatanggap ang pandas ng bagay na parang file at inilalapat ang dati nitong mga opsyon sa delimiter, column, encoding at data-type.
Ang pagsuri sa resulta ng HTTP bago ang pag-parse ay pumipigil sa pagturing sa malinaw na katawan ng error sa HTTP bilang talahanayan. Suriin din ang hindi inaasahang nilalaman: ang pahina ng login o patakaran ay maaaring magbalik ng 200 at HTML pa rin sa halip na ang hiniling na CSV.
Para sa HTTP URL, ang storage_options ng read_csv ay ipinapasa bilang mga header ng kahilingan. Ang interface na iyon ay hindi proxies mapping na tulad ng Requests.
Walang archive filename ang isang buffer para gabayan ang hinuha sa compression. Tukuyin ang compression kapag kailangan ito ng payload na nakuha. Gumagana rin ang parehong pagkuha-muna sa read_excel at byte buffer, gamit ang spreadsheet engine na angkop sa format na iyon.
Ang halimbawang ito ay nagtatago ng buong tugon sa memory. Para sa malaking export, i-stream ito sa pinamamahalaang lokal na file at i-parse ang file na iyon, na hinahati sa mga bahagi kung saan sinusuportahan ito ng daloy ng trabaho ng data.