python Zapisz obraz z adresu url
Mam problem, gdy używam Pythona do zapisywania obrazu z adresu url przez urllib2 request lub urllib.urlretrieve. To jest adres URL obrazu jest poprawny. Mogę go pobrać ręcznie za pomocą Eksploratora. Jednak gdy używam Pythona do pobrania obrazu, pliku nie można otworzyć. Używam Mac OS preview, aby wyświetlić obraz. Dziękuję!
Aktualizacja:
Kod jest następujący
def downloadImage(self):
request = urllib2.Request(self.url)
pic = urllib2.urlopen(request)
print "downloading: " + self.url
print self.fileName
filePath = localSaveRoot + self.catalog + self.fileName + Picture.postfix
# urllib.urlretrieve(self.url, filePath)
with open(filePath, 'wb') as localFile:
localFile.write(pic.read())
Adres URL obrazu, który chcę pobrać na http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg
Ten adres URL jest poprawny i mogę go zapisać przez przeglądarkę, ale kod Pythona pobierze plik, którego nie można otworzyć. Podgląd mówi: "może być uszkodzony lub używać formatu pliku, którego podgląd nie rozpoznaje." Porównuję obraz pobrany przez Pythona i ten, który pobieram ręcznie przez przeglądarkę. Rozmiar pierwszego jest o kilka bajtów mniejszy. Wygląda na to, że plik jest niedokończony, ale nie wiem dlaczego python nie może go całkowicie pobrać.
4 answers
Przykładowy kod, który działa u mnie na Windows:
with open('pic1.jpg', 'wb') as handle:
response = requests.get(pic_url, stream=True)
if not response.ok:
print response
for block in response.iter_content(1024):
if not block:
break
handle.write(block)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-14 04:34:47
import requests
img_data = requests.get(image_url).content
with open('image_name.jpg', 'wb') as handler:
handler.write(img_data)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-14 20:30:19
Urywek kodu Pythona do pobrania pliku z adresu url i zapisania jego nazwy
import requests
url = 'http://google.com/favicon.ico'
filename = url.split('/')[-1]
r = requests.get(url, allow_redirects=True)
open(filename, 'wb').write(r.content)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 12:35:34
import random
import urllib.request
def download_image(url):
name = random.randrange(1,100)
fullname = str(name)+".jpg"
urllib.request.urlretrieve(url,fullname)
download_image("http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-09 22:03:12