2013-10-05 1 views
0

Я пишу скрипт, чтобы загрузить изображение профиля Steam из его URL-адреса, как это предусмотрено API-интерфейсом Steam. Независимо от метода, который я использую, я получаю испорченные результаты:Загрузка изображения из URL с использованием Python с поврежденными результатами

Example with corrupted and original images

Steam's link to the original image.

Использование "запросов" Библиотека:

avatar = open(avatarName, 'wb') 
avatar.write(requests.get(avatarURL).content) 
avatar.close() 

, а также:

avatar = requests.get(avatarURL) 
with open(avatarName, 'wb') as f: 
    f.write(avatar.content) 

И с помощью "URLLIB" Библиотека:

urllib.urlretrieve(avatarURL, avatarName) 

, а также:

avatar = urllib.URLopener() 
avatar.retrieve(avatarURL, avatarName) 

И с помощью Wget непосредственно по ссылке (обратите внимание, что это за пределами Python, только с терминала):

wget http://media.steampowered.com/steamcommunity/public/images/avatars/ad/adec76ed86e8ffa892d847c8e619262d30e74e32_full.jpg 

Поскольку это проблема коррупции, я думал, что это, возможно, придется делать с установкой/не устанавливая двоичный флаг при открытии файлового объекта. Еще один метод, который я еще не пробовал, - это импорт команд ОС и использование wget для загрузки файла, а затем работа от него. wget также дает поврежденный результат.

Любопытно, что каждый метод используется для изображений, которые повреждаются точно так же каждый раз.

Я еще не использовал urllib2 (здесь), просто потому, что большая часть Q & A Я проверяю использование urllib.

+0

Какой адрес специально (или другой подобный)? Не имея возможности проверить это, я не могу вам помочь. –

+0

wget работает нормально для этого URL-адреса? – Antigluk

+0

@ sigmavirus24 Пример изображения [здесь.] (Http://media.steampowered.com/steamcommunity/public/images/avatars/ad/adec76ed86e8ffa892d847c8e619262d30e74e32_full.jpg) –

ответ

1

После того, как @ ton1c сказал, что все сработало для него, я попытался запустить wget из другой системы, и все получилось просто отлично. Я использую Filezilla для передачи файлов на/с моего сервера, поэтому я проверил образы на самом деле на сервере, перейдя к ним с помощью браузера, и все они отображаются нормально. По-видимому, загрузка их на компьютер с помощью Filezilla привела к повреждению. Это другая проблема, но небольшая, которую я сам выясню.