Ich kenne die URL eines Bildes im Internet.
zB http://www.digimouth.com/news/media/2011/09/google-logo.jpg , das das Logo von Google enthält.
Wie kann ich dieses Bild jetzt mit Python herunterladen, ohne die URL in einem Browser zu öffnen und die Datei manuell zu speichern?
python
web-scraping
Pankaj Vatsa
quelle
quelle
Antworten:
Python 2
Hier ist ein einfacher Weg, wenn Sie es nur als Datei speichern möchten:
Das zweite Argument ist der lokale Pfad, in dem die Datei gespeichert werden soll.
Python 3
Wie SergO vorgeschlagen hat, sollte der folgende Code mit Python 3 funktionieren.
quelle
filename = link.split('/')[-1]
import urllib.request
undurllib.request.urlretrieve()
entsprechend.file01.jpg
wird Ihr Bild enthalten.quelle
open("file01.jpg", "wb")
Andernfalls können Sie das Bild beschädigen.urllib.urlretrieve
kann das Bild direkt speichern.Ich habe ein Skript geschrieben, das genau dies tut und das auf meinem Github für Sie verfügbar ist.
Ich habe BeautifulSoup verwendet, um jede Website nach Bildern zu analysieren. Wenn Sie viel Web-Scraping durchführen (oder mein Tool verwenden möchten), empfehle ich Ihnen
sudo pip install BeautifulSoup
. Informationen zu BeautifulSoup finden Sie hier .Der Einfachheit halber ist hier mein Code:
quelle
Dies kann mit Anfragen erfolgen. Laden Sie die Seite und sichern Sie den binären Inhalt in einer Datei.
quelle
Python 3
urllib.request - Erweiterbare Bibliothek zum Öffnen von URLs
quelle
Eine Lösung, die mit Python 2 und Python 3 funktioniert:
oder wenn die zusätzliche Anforderung von
requests
akzeptabel ist und wenn es sich um eine http (s) URL handelt:quelle
Ich habe ein Skript erstellt, das das Skript von Yup erweitert. Ich habe einige Dinge repariert. Es wird jetzt 403: Verbotene Probleme umgangen. Es stürzt nicht ab, wenn ein Bild nicht abgerufen werden kann. Es wird versucht, beschädigte Vorschauen zu vermeiden. Es bekommt die richtigen absoluten URLs. Es gibt mehr Informationen. Es kann mit einem Argument über die Befehlszeile ausgeführt werden.
quelle
Anforderungsbibliothek verwenden
quelle
Dies ist eine sehr kurze Antwort.
quelle
Version für Python 3
Ich habe den Code von @madprops für Python 3 angepasst
quelle
Etwas Neues für Python 3 mit Requests:
Kommentare im Code. Gebrauchsfertige Funktion.
quelle
Späte Antwort, aber
python>=3.6
Sie können dload verwenden , dh:Wenn Sie das Bild als benötigen
bytes
, verwenden Sie:installieren mit
pip3 install dload
quelle
quelle
TypeError: a bytes-like object is required, not 'Response'
. Es muss seinhandler.write(img_data.content)
handler.write(img_data.read())
.