J'utilise souvent ** Python ** pour télécharger par lots des images de fond d'écran à partir d'un certain site de papier peint, ou télécharger par lots des images de matériel à partir d'un certain site de matériel gratuit, mais s'il s'agit d'un environnement UNIX à ce moment-là,
import os
os.system("wget -O sample.jpg http://sample.org/sample.img")
C'était facile à faire avec ** wget **, mais wget ne peut pas être utilisé dans un environnement Windows. J'ai donc essayé de savoir comment enregistrer le binaire. Cela semble faire comme suit.
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)
Comme mentionné ci-dessus, le raw
(objet HTTPResponse utilisant urllib3) dans l'objet Response
du module ** requests **,
Le format est * enregistrer en copiant dans l'objet fichier cible à l'aide de la fonction copyfileobj
du module ** shutil **.
Si vous utilisez ceci, par exemple, lorsque vous souhaitez télécharger par lots des fichiers image à partir d'un certain site de papier peint,
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)
Vous pouvez le faire en l'écrivant comme ceci. C'est très pratique, donc je pense que c'est une bonne idée d'en faire un script.
Recommended Posts