Descargando un archivo desde una página web utilizando python, obteniendo un archivo html en lugar del archivo zip real.
Estoy tratando de descargar un archivo desde una página web que requiere inicio de sesión. Soy capaz de iniciar sesión a través de Python y Beautiful Soup. Pero cuando trato de descargar un archivo a través de Python desde esa página, obtengo un archivo HTML en lugar de obtener un archivo ZIP previsto. En la página web, cuando se hace clic en el enlace del archivo, se abre una nueva ventana y se pide que se descargue el archivo. El archivo de descarga está en formato ZIP. Así que por favor ayúdame a descargar el archivo a través de Python.
response = requests.post('https://consumerpyramidsdx.cmie.com/kommon/bin/sr.php', headers=headers, params=params, cookies=cookies, data=data)
soup = BeautifulSoup(response.content, "lxml")
baseurl= 'https://consumerpyramidsdx.cmie.com'
print(soup)
file_url = 'https://consumerpyramidsdx.cmie.com/kommon/bin/sr.php?kall=wsubsdl&fn=consumption_pyramids_20210630_MS&fmt=csv&rrurl=consumptionpyramidsdx'
with open('consumption_pyramids_20210630_MS_csv.zip', 'wb') as file:
rs = requests.get(file_url)
file.write(rs.content)
davy.ai
El problema con el código anterior es que no mantiene la sesión de inicio de sesión mientras descarga el archivo. Para descargar el archivo, es necesario agregar el objeto de sesión (creado después de iniciar sesión) a la solicitud GET del archivo.
Este es el código actualizado que debería funcionar:
Este código inicia sesión en el sitio web usando un objeto de sesión, y luego utiliza el mismo objeto de sesión para descargar el archivo. También envía una cadena de usuario-agente en los encabezados para simular una solicitud del navegador.
Una vez descargado el archivo, puede usar la biblioteca gzip de Python para extraer su contenido si está comprimido.