Quan la ruta HTTP necessita control explícit del proxy, obteniu primer el CSV i deixeu que pandas gestioni els bytes resultants:

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

El proxy s'encarrega del transport; la llista de proxys HTTP proporciona candidats a punt final per a una ruta HTTP pública. pandas rep un objecte semblant a un fitxer i aplica les seves opcions habituals de delimitador, columnes, codificació i tipus de dades.

Comprovar el resultat HTTP abans d'analitzar evita tractar com a taula un cos d'error HTTP evident. Reviseu també contingut inesperat: una pàgina d'inici de sessió o de política pot retornar 200 i seguir sent HTML en lloc del CSV sol·licitat.

Per a URL HTTP, els storage_options de read_csv s'envien com a capçaleres de la petició. Aquesta interfície no és un mapatge de proxies a l'estil de Requests.

Un buffer no té nom d'arxiu per guiar la inferència de compressió. Especifiqueu compression quan la càrrega obtinguda ho requereixi. La mateixa disposició d'obtenir primer funciona amb read_excel i un buffer de bytes, amb el motor de full de càlcul adequat a aquest format.

Aquest exemple manté tota la resposta en memòria. Per a una exportació gran, envieu-la a un fitxer local gestionat i analitzeu aquest fitxer, amb fragmentació quan el flux de dades ho permeti.

Articles relacionats