pandas와 Requests로 프록시를 통해 CSV 읽기
구성된 Requests 전송으로 CSV를 가져오고, 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을 반환하면서도 요청한 CSV 대신 HTML일 수 있습니다.
HTTP URL의 경우 read_csv의 storage_options는 요청 헤더로 전달됩니다. 그 인터페이스는 Requests 방식의 proxies 매핑이 아닙니다.
버퍼에는 압축 추론을 이끌 아카이브 파일 이름이 없습니다. 가져온 페이로드가 필요로 할 때 compression을 지정하십시오. 같은 '먼저 가져오기' 구성은 read_excel과 바이트 버퍼에서도 작동하며, 해당 형식에 맞는 스프레드시트 엔진을 사용합니다.
이 예제는 전체 응답을 메모리에 보관합니다. 대용량 내보내기의 경우 관리되는 로컬 파일로 스트리밍하고 그 파일을 파싱하십시오. 데이터 워크플로가 지원하는 곳에서는 청킹을 사용합니다.