python Сохранить Изображение из url
У меня возникла проблема, когда я использую python для сохранения изображения из url либо по запросу urllib2, либо по urllib.urlretrieve. То есть url изображения является допустимым. Я мог загрузить его вручную с помощью проводника. Однако, когда я использую python для загрузки изображения, файл не может быть открыт. Я использую Mac OS preview для просмотра изображения. Спасибо!
обновление:
код выглядит следующим образом
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())
URL-адрес изображения, который я хочу загрузить есть http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg
этот URL действителен, и я могу сохранить его через браузер, но код python загрузит файл, который не может быть открыт. Предварительный просмотр говорит, что "он может быть поврежден или использовать формат, просмотр не признает." Я сравниваю изображение, которое я загружаю Python и тот, который я загружаю вручную через браузер. Размер первого на несколько байтов меньше. Так что кажется, что файл является незавершенным, но я не знаю, почему python не может полностью загрузить его.
4 ответов
пример кода, который работает для меня на 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)
import requests
img_data = requests.get(image_url).content
with open('image_name.jpg', 'wb') as handler:
handler.write(img_data)
фрагмент кода Python для загрузки файла с url-адреса и сохранения с его именем
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)
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")