Sé la URL de una imagen en Internet.
por ejemplo , http://www.digimouth.com/news/media/2011/09/google-logo.jpg , que contiene el logotipo de Google.
Ahora, ¿cómo puedo descargar esta imagen usando Python sin abrir la URL en un navegador y guardar el archivo manualmente?
python
web-scraping
Pankaj Vatsa
fuente
fuente
Respuestas:
Python 2
Aquí hay una forma más directa si todo lo que quiere hacer es guardarlo como un archivo:
El segundo argumento es la ruta local donde se debe guardar el archivo.
Python 3
Como sugirió SergO, el siguiente código debería funcionar con Python 3.
fuente
filename = link.split('/')[-1]
import urllib.request
yurllib.request.urlretrieve()
, en consecuencia.file01.jpg
contendrá su imagen.fuente
open("file01.jpg", "wb")
contrario, puede dañar la imagen.urllib.urlretrieve
Puede guardar la imagen directamente.Escribí un script que hace exactamente esto , y está disponible en mi github para su uso.
Utilicé BeautifulSoup para permitirme analizar cualquier sitio web en busca de imágenes. Si va a hacer mucho raspado web (o tiene la intención de usar mi herramienta), le sugiero
sudo pip install BeautifulSoup
. La información sobre BeautifulSoup está disponible aquí .Por conveniencia aquí está mi código:
fuente
Esto se puede hacer con solicitudes. Cargue la página y descargue el contenido binario en un archivo.
fuente
Python 3
urllib.request: biblioteca extensible para abrir URL
fuente
Una solución que funciona con Python 2 y Python 3:
o, si el requisito adicional de
requests
es aceptable y si es una URL de http:fuente
Hice un guión ampliando el guión de Yup. Arreglé algunas cosas. Ahora evitará 403: problemas prohibidos. No se bloqueará cuando una imagen no se pueda recuperar. Intenta evitar vistas previas corruptas. Obtiene las URL absolutas correctas. Da más información. Se puede ejecutar con un argumento desde la línea de comandos.
fuente
Usar la biblioteca de solicitudes
fuente
Esta es una respuesta muy corta.
fuente
Versión para Python 3
Ajusté el código de @madprops para Python 3
fuente
Algo nuevo para Python 3 usando Solicitudes:
Comentarios en el código. Listo para usar la función.
fuente
Respuesta tardía, pero
python>=3.6
puede usar dload , es decir:si necesita la imagen como
bytes
, use:instalar usando
pip3 install dload
fuente
fuente
TypeError: a bytes-like object is required, not 'Response'
. Debe serhandler.write(img_data.content)
handler.write(img_data.read())
.