2013-10-05 68 views
0

我正在編寫一個腳本從Steam的API提供的URL下載Steam個人資料圖片。不管我用什麼方法,我越來越損壞結果:使用Python下載來自URL的圖像給出損壞的結果

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 

因爲它是一個腐敗問題,我想這可能與設置/不設置做二進制標誌當我打開文件對象。 我還沒有嘗試過的另一種方法是導入OS命令並使用wget下載文件,然後從那裏開始工作。 wget也給出了損壞的結果。

有趣的是,似乎每個使用的方法都會導致每次都以完全相同的方式損壞的圖像。

我還沒有使用urllib2(這裏),只是因爲我已經檢查過的大多數Q &已使用urllib。

+0

什麼是專門(或另一個類似的網址)?如果不能對此進行測試,我無法幫助你。 –

+0

確實爲這個網址工作好嗎? – Antigluk

+0

@ sigmavirus24示例圖像是[這裏](http://media.steampowered.com/steamcommunity/public/images/avatars/ad/adec76ed86e8ffa892d847c8e619262d30e74e32_full.jpg) –

回答

1

@ ton1c說過一切都爲他工作後,我試着從另一個系統運行wget,它工作得很好。我使用Filezilla將文件傳輸到/從我的服務器,所以我檢查了實際上在服務器上的圖像,通過瀏覽器導航到它們,並且所有圖像都正常顯示。顯然通過Filezilla將它們下載到我的電腦中導致了腐敗。這是一個不同的問題,但我可以自己找出一個小問題。