Cómo descargar archivos en Python

Python proporciona varias formas de descargar archivos de Internet. Esto se puede hacer a través de HTTP usando el paquete urllib o la biblioteca de solicitudes. Este tutorial tratará sobre cómo usar estas bibliotecas para descargar archivos desde URL usando Python.

PETICIONES

La biblioteca de solicitudes es una de las bibliotecas más populares de Python. Las solicitudes le permiten enviar  Solicitudes HTTP / 1.1 sin la necesidad de agregar manualmente cadenas de consulta a sus URL, o codificar de forma sus datos POST.

Con la biblioteca de solicitudes, puede realizar muchas funciones, incluyendo:

  • añadiendo datos de formulario,
  • añadiendo archivos multiparte,
  • y accediendo a los datos de respuesta de Python.

HACIENDO PETICIONES

Lo primero que debes hacer es instalar la biblioteca y es tan simple como:

solicitudes de instalación de pip

Para probar si la instalación ha sido exitosa, puede hacer una prueba muy sencilla en su intérprete de python simplemente escribiendo:

solicitudes de importación

Si la instalación ha sido exitosa, no habrá errores..

Las solicitudes HTTP incluyen:

  • OBTENER
  • ENVIAR
  • PONER
  • BORRAR
  • OPCIONES
  • CABEZA

Hacer una solicitud GET

Hacer solicitudes es muy fácil como se ilustra a continuación..

las solicitudes de importación req = requests.get ("http://www.google.com")

El comando anterior obtendrá la página web de Google y almacenará la información en elreq variable. Entonces podemos ir a obtener otros atributos también.

Por ejemplo, para saber si la búsqueda de la página web de Google fue exitosa, consultaremos el código de estado.

importar solicitudes req = requests.get ("http://www.google.com") req.status_code 200 # 200 significa una solicitud exitosa

¿Qué pasa si queremos averiguar el tipo de codificación de la página web de Google??

req.codificación ISO-8859-1

También es posible que desee saber el contenido de la respuesta..

req.text

Esto es solo un contenido truncado de la respuesta..

'Google>

Hacer una solicitud POST

En términos simples, una solicitud POST utilizada para crear o actualizar datos. Esto se utiliza especialmente en la presentación de formularios..

Supongamos que tiene un formulario de registro que toma una dirección de correo electrónico y una contraseña como datos de entrada. Cuando haga clic en el botón Enviar para el registro, la solicitud posterior se mostrará como se muestra a continuación..

data = "email": "[email protected]", "password": "12345") req = requests.post ("http://www.google.com, params = data)

Hacer una solicitud PUT

Una solicitud PUT es similar a una solicitud POST. Se utiliza para actualizar datos. Por ejemplo, la API que se muestra a continuación muestra cómo realizar una PONER solicitud.

data = "name": "tutsplus", "telephone": "12345") r.put ("http://www.contact.com, params = data")

Hacer una solicitud de BORRAR

Se usa una solicitud DELETE, como sugiere su nombre, para eliminar datos. A continuación se muestra un ejemplo de BORRAR solicitud

data = 'name': 'Tutsplus' url = "https://www.contact.com/api/") response = requests.delete (url, params = data)

Paquete urllib

urllib es un paquete que recopila varios módulos para trabajar con URL, a saber:

  • urllib.request para abrir y leer URLs.
  • urllib.error conteniendo las excepciones planteadas por urllib.request
  • urllib.parse para analizar URLs.
  • urllib.robotparser para analizar robots.txt archivos.

urllib.request  Ofrece una interfaz muy sencilla, en forma de urlopen Función capaz de obtener direcciones URL utilizando una variedad de protocolos diferentes. También ofrece una interfaz un poco más compleja para el manejo de autenticación básica, cookies, proxies e.t. do.

Cómo obtener URLs con urllib

La forma más sencilla de usar urllib.request es la siguiente:

importe urllib.request con urllib.request.urlopen ('http://python.org/') como respuesta: html = response.read () 

Si desea recuperar un recurso de Internet y almacenarlo, puede hacerlo a través de urlretrieve () función.

importar urllib.request nombre de archivo, encabezados = urllib.request.urlretrieve ('http://python.org/') html = abrir (nombre de archivo) 

Descargando Imágenes Con Python

En este ejemplo, queremos descargar la imagen disponible en este enlace utilizando tanto el módulo llibrary de solicitud como el módulo urllib. 

url = 'https://www.python.org/static/opengraph-icon-200x200.png' # descargando con urllib # importado la biblioteca urllib import urllib # Copie un objeto de red en un archivo local urllib.urlretrieve (url, " python.png ") # descargando con solicitudes # importa las solicitudes de importación de la biblioteca # descargue los contenidos de url en formato binario r = requests.get (url) # método abierto para abrir un archivo en su sistema y escriba los contenidos con open (" python1.png "," wb ") como código: code.write (r.content) 

Descargar archivos PDF con Python

En este ejemplo, descargaremos un pdf sobre las tendencias de google desde este enlace..

url = 'https://static.googleusercontent.com/media/www.google.com/en//googleblogs/pdfs/google_predicting_the_present.pdf' # descargando con urllib # importar el paquete urllib importar urllib # Copiar un objeto de red a un archivo local urllib.urlretrieve (url, "tutorial.pdf") # descargando con solicitudes # importe las solicitudes de importación de la biblioteca # descargue el contenido del archivo en formato binario r = requests.get (url) # método abierto para abrir un archivo en su Sistema y escriba los contenidos con open ("tutorial1.pdf", "wb") como código: code.write (r.content) 

Descargar archivos zip con Python

En este ejemplo, vamos a descargar el contenido de un repositorio de GitHub que se encuentra en este enlace y almacenar el archivo localmente.

url = 'https://codeload.github.com/fogleman/Minecraft/zip/master' # descargando con solicitudes # importe las solicitudes de importación de la biblioteca # descargue el contenido del archivo en formato binario r = requests.get (url) # abierto método para abrir un archivo en su sistema y escribir el contenido con open ("minemaster1.zip", "wb") como código: code.write (r.content) # descargando con urllib # import the urllib library import urllib # Copy a objeto de red a un archivo local urllib.urlretrieve (url, "minemaster.zip") 

Descargar videos con Python

En este ejemplo, queremos descargar la video conferencia disponible en esta página

url = 'https://www.youtube.com/watch?v=aDwCCUfNFug' video_name = url.split ('/') [- 1] # utilizando solicitudes # importó las solicitudes de importación de la biblioteca de solicitudes imprimir "Archivo de descarga:% s "% video_name # descarga los contenidos de url en formato binario r = requests.get (url) # método abierto para abrir un archivo en tu sistema y escribe los contenidos con open ('tutorial.mp4', 'wb') como f: f .write (r.content) # using urllib # importó la biblioteca urllib import urllib print "Archivo de descarga:% s"% video_name # Copie un objeto de red en un archivo local urllib.urlretrieve (url, "tutorial2.mp4") 

Conclusión

Este tutorial ha cubierto los métodos más utilizados para descargar archivos, así como los formatos de archivo más comunes. Aunque escribirás menos código al usar el urllib módulo, el peticiones Se prefiere el módulo debido a su simplicidad, popularidad y una amplia gama de características que incluyen:

  • Keep-Alive & Connection Pooling
  • Dominios internacionales y URLs
  • Sesiones con Persistencia de Galletas
  • Verificación SSL de estilo navegador
  • Decodificación automática de contenido
  • Autenticación Básica / Digest
  • Galletas elegantes de clave / valor
  • Descompresión automática
  • Cuerpos de respuesta Unicode
  • Soporte HTTP (S) Proxy
  • Cargas de archivos multiparte
  • Descargas de streaming
  • Tiempos de espera de conexión
  • Solicitudes fragmentadas
  • .netrc Apoyo