Obtuve una lista con metadatos de cientos de archivos para descargar y estoy tratando de averiguar si es posible hacerlo con un script, ya que, por supuesto, abrir manualmente cientos de páginas, hacer clic y descargar estos documentos será muy ineficiente. Mi conocimiento de HTML o JS es casi nulo. Estoy familiarizado con Python y BASH.
Los metadatos contienen nombres de archivo, jerarquía y una ID de documento, de modo que se puede crear una URL como se muestra a continuación:
"https://domain.io/#/documents/download/a5dew436-2dv1-43df-9t39-cdefgxstf289"Si pego esa URL en un navegador, llego a una página con una ventana y un enlace a la misma URL . Si se hace clic en ese enlace, se descarga el archivo. Pero si hago clic derecho en el enlace y lo abro en una nueva pestaña, se carga la misma página. En otras palabras, no puedo crear un script que descargue el archivo con ese enlace, ya que se debe hacer clic manualmente. Estoy seguro de que me estoy perdiendo algo aquí.
La parte relevante del contenido de la página es:
<a _ngcontent-ojy-c58 class="btn-link bg-star-inserted" href="/#/documents/download/a5dew436-2dv1-43df-9t39-cdefgxstf289" title="filename.pdf"> filename.pdf </a> == $0Ahora, ¿por qué la diferencia entre hacer clic manualmente en un enlace descarga un archivo, mientras que si se pega el mismo enlace, se abre una página web? ¿Está sucediendo algún tipo de magia oculta aquí cuando hago clic en ese enlace que hace que se descargue ese archivo? En caso afirmativo, ¿cómo puedo reproducir esa magia a través de un script (Python, BASH, lo que sea...)
--- editar ---
¿Qué ha probado hasta ahora?
Hasta ahora he intentado obtener mediante programación el contenido de la página web con un enlace al archivo que necesito descargar:
In : import requests ...: cont = requests.get('https://domain.io/#/documents/download/a5dew436-2dv1-43df-9t39-cdefgxstf289') Y la parte relevante de cont.content.decode() está debajo. No entiendo eso, todo lo que sé es que no puedo descargar un archivo mediante programación.
<body> <app-root></app-root> <app-redirect></app-redirect> <script src="runtime-es2015.8018d72d32ff24b300d9.js" type="module"> </script> <script src="runtime-es5.8018d72d32ff24b300d9.js" nomodule defer> </script> <script src="polyfills-es5.94e2668cf22fe39657e2.js" nomodule defer> </script> <script src="polyfills-es2015.55685fdcf18327bde638.js" type="module"> </script> <script src="scripts.fbbaa5b34df08dd651e4.js" defer> </script> <script src="main-es2015.8cb6177f1451e573c1f5.js" type="module"> </script> <script src="main-es5.8cb6177f1451e573c1f5.js" nomodule defer> </script> </body></html>