[PYTHON] Laden Sie Bilder mithilfe von Anfragen herunter

Es ist nur eine persönliche Notiz. Erstellen Sie ein Python-Programm, das Bilder mithilfe einer Bibliothek namens "Anfragen" schnell herunterlädt. Urllib.requests scheint in Python3 nützlich zu sein, aber es scheint, dass es in Python2 nicht verwendet werden kann (unzureichende Forschung), also habe ich dies verwendet. Sie können verschiedene Einstellungen wie Cookies festlegen, aber ein einfaches Programm erstellen, auf das Sie zugreifen und das Sie herunterladen können.

Offiziell: Python-Anfragen

Installation

$ pip install requests

Versuchen Sie es als Testversion

$ python
>>> import requests
>>> url = "http://docs.python-requests.org/en/master/#"
>>> res = requests(url)
>>> res = requests.get(url)
>>> res.status_code
200
>>> res.headers["content-type"]
'text/html'
>>> res.content
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n\n\n<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n...
>>> res.text  
u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n\n\n<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n ...

Wie benutzt man (Auszug)

Weitere Informationen finden Sie unter The User Guide.

1. So senden Sie eine Anfrage

Wenn der URL-Parameter festgelegt ist, wird er den Argumentparametern im Wörterbuchformat übergeben.

res = requests.get('http://httpbin.org/get', params={'key':'value'})

print(res.url)  #=> http://httpbin.org/get?key=value

In Post und Put können Formularinformationen mit den Argumentdaten gesendet werden.

res = requests.post('http://httpbin.org/post', data = {'key':'value'})
res = requests.put('http://httpbin.org/put', data = {'key':'value'})

Die Methoden werden je nach Art der Anforderung bereitgestellt.

res = requests.get('http://httpbin.org/get')
res = requests.post('http://httpbin.org/post', data = {'key':'value'})
res = requests.put('http://httpbin.org/put', data = {'key':'value'})
res = requests.delete('http://httpbin.org/delete')
res = requests.head('http://httpbin.org/get')
res = requests.options('http://httpbin.org/get')

2. Antwortverarbeitung

Sie können auf die folgenden Variablen verweisen.

res = requests.get('http://httpbin.org/get')

# HTML Status Code
response.status_code

#Inhalt im Antwortheader-Typ untersuchen
print res.header["content-type"] 

#Erfasste Daten(binär)
print res.content

#Erfasste Daten(Codiert)Und Kodierung
print res.text
print res.encoding

Lassen Sie uns das Bild herunterladen

Die Eingabe ist eine Textdatei "input.txt" mit einer Liste von URLs, und die Bilder werden in der Reihenfolge 0.jpg, 1.jpg, 2.jpg, ... im Ausgabeverzeichnis "images /" ausgegeben. An einigen Stellen wird seltsamer Code eingemischt, weil er süß ist.

import requests
import os
import sys

#Bild herunterladen
def download_image(url, timeout = 10):
    response = requests.get(url, allow_redirects=False, timeout=timeout)
    if response.status_code != 200:
        e = Exception("HTTP status: " + response.status_code)
        raise e

    content_type = response.headers["content-type"]
    if 'image' not in content_type:
        e = Exception("Content-Type: " + content_type)
        raise e

    return response.content

#Legen Sie den Dateinamen des Bildes fest
def make_filename(base_dir, number, url):
    ext = os.path.splitext(url)[1] #Erweiterung erhalten
    filename = number + ext        #Fügen Sie der Nummer eine Erweiterung hinzu, um daraus einen Dateinamen zu machen

    fullpath = os.path.join(base_dir, filename)
    return fullpath

#Bild speichern
def save_image(filename, image):
    with open(filename, "wb") as fout:
        fout.write(image)

#Maine
if __name__ == "__main__":
    urls_txt = "input.txt"
    images_dir = "images"
    idx = 0

    with open(urls_txt, "r") as fin:
        for line in fin:
            url = line.strip()
            filename = make_filename(images_dir, idx, url)

            print "%s" % (url)
            try:
                image = download_image(url)
                save_image(filename, image)
                idx += 1
            except KeyboardInterrupt:
                break
            except Exception as err:
                print "%s" % (err)

Recommended Posts

Laden Sie Bilder mithilfe von Anfragen herunter
Speichern Sie Bilder mit Python3-Anforderungen
Laden Sie Bilder von "Irasutoya" mit Scrapy herunter
Sammeln Sie Bilder mit icrawler
Laden Sie Bilder automatisch mit Scraping herunter
Kategorisieren Sie Katzenbilder mit ChainerCV
Laden Sie Excel mit Spring MVC herunter
Geotag-Vorhersage aus Bildern mit DNN
Senden Sie Nachrichten und Bilder mit LineNotify
Bilder können mit Google_images_download nicht heruntergeladen werden
Generieren mehrsprachiger Textbilder mit Python
OAuth-Authentifizierung mit Anforderungen Beispiel: Flickr
ResourceWarning bei Verwendung von Anforderungen: nicht geschlossene Problemumgehung
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
Anfragen
Verwenden Sie boto, um die Datei von S3 herunterzuladen.
Melden Sie sich mit Anforderungen in Python bei Slack an
Laden Sie Bilder von der URL-Liste in Python herunter
So laden Sie YouTube-Videos mit pytube3 herunter
Laden Sie Dateien in jedem Format mit Python herunter