Je connais l'URL d'une image sur Internet.
par exemple http://www.digimouth.com/news/media/2011/09/google-logo.jpg , qui contient le logo de Google.
Maintenant, comment puis-je télécharger cette image en utilisant Python sans ouvrir l'URL dans un navigateur et enregistrer le fichier manuellement.
python
web-scraping
Pankaj Vatsa
la source
la source
Réponses:
Python 2
Voici un moyen plus simple si tout ce que vous voulez faire est de l'enregistrer sous forme de fichier:
Le deuxième argument est le chemin local où le fichier doit être enregistré.
Python 3
Comme SergO l'a suggéré, le code ci-dessous devrait fonctionner avec Python 3.
la source
filename = link.split('/')[-1]
import urllib.request
eturllib.request.urlretrieve()
, en conséquence.file01.jpg
contiendra votre image.la source
open("file01.jpg", "wb")
sinon vous risquez de corrompre l'image.urllib.urlretrieve
peut enregistrer l'image directement.J'ai écrit un script qui fait exactement cela , et il est disponible sur mon github pour votre utilisation.
J'ai utilisé BeautifulSoup pour me permettre d'analyser n'importe quel site Web à la recherche d'images. Si vous allez faire beaucoup de web scraping (ou avez l'intention d'utiliser mon outil), je vous suggère
sudo pip install BeautifulSoup
. Des informations sur BeautifulSoup sont disponibles ici .Pour plus de commodité, voici mon code:
la source
Cela peut être fait avec des demandes. Chargez la page et videz le contenu binaire dans un fichier.
la source
Python 3
urllib.request - Bibliothèque extensible pour l'ouverture d'URL
la source
Une solution qui fonctionne avec Python 2 et Python 3:
ou, si l'exigence supplémentaire de
requests
est acceptable et s'il s'agit d'une URL http (s):la source
J'ai fait un script qui étend le script de Yup. J'ai réparé certaines choses. Il contournera désormais 403: Problèmes interdits. Il ne plantera pas lorsqu'une image ne sera pas récupérée. Il essaie d'éviter les aperçus corrompus. Il obtient les bonnes URL absolues. Il donne plus d'informations. Il peut être exécuté avec un argument depuis la ligne de commande.
la source
Utilisation de la bibliothèque de requêtes
la source
C'est une réponse très courte.
la source
Version pour Python 3
J'ai ajusté le code de @madprops pour Python 3
la source
Quelque chose de frais pour Python 3 utilisant les requêtes:
Commentaires dans le code. Fonction prête à l'emploi.
la source
Réponse tardive, mais pour
python>=3.6
vous pouvez utiliser dload , c'est-à-dire:si vous avez besoin de l'image comme
bytes
, utilisez:installer en utilisant
pip3 install dload
la source
la source
TypeError: a bytes-like object is required, not 'Response'
. Ça doit êtrehandler.write(img_data.content)
handler.write(img_data.read())
.