Ich verwende oft ** Python **, um Hintergrundbilder von einer bestimmten Hintergrundseite stapelweise herunterzuladen oder Materialbilder von einer bestimmten freien Materialseite stapelweise herunterzuladen. Wenn es sich jedoch zu diesem Zeitpunkt um eine UNIX-Umgebung handelt,
import os
os.system("wget -O sample.jpg http://sample.org/sample.img")
Es war einfach mit ** wget ** zu tun, aber wget kann nicht in einer Windows-Umgebung verwendet werden. Also habe ich versucht herauszufinden, wie man die Binärdatei speichert. Es scheint wie folgt zu tun.
import shutil
import requests
URL = "http://sample.org/sample.img"
res = requests.get(URL,stream=True)
with open(filepath,"wb") as fp:
shutil.copyfileobj(res.raw,fp)
Wie oben erwähnt, das raw
(HTTPResponse-Objekt mit urllib3) im Response
-Objekt des Moduls ** request **
Das Format ist * Speichern durch Kopieren in das Zieldateiobjekt mit der Funktion copyfileobj
des Moduls ** shutil **.
Wenn Sie dies beispielsweise verwenden, wenn Sie Bilddateien von einer bestimmten Hintergrundbild-Site stapelweise herunterladen möchten,
import shutil
import requests
from BeautifulSoup import BeautifulSoup
URL = "http://sample.org/"
targets = []
soup = BeautifulSoup(requests.get(URL).text)
for link in soup.findAll("a"):
if link.get("href").endswith(".jpg "):
targets.append(link.get("href"))
for target in targets:
res = requests.get(target)
with open(target.split("/")[-1], "wb") as fp:
shutil.copyfileobj(res.raw,fp)
Sie können es tun, indem Sie es so schreiben. Es ist sehr praktisch, daher halte ich es für eine gute Idee, daraus ein Skript zu machen.
Recommended Posts