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
$ pip install requests
$ 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 ...
Weitere Informationen finden Sie unter The User Guide.
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')
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
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