我正在编写一个脚本,用于从 Steam API 提供的 URL 下载 Steam 个人资料图片。无论我使用哪种方法,我都会得到损坏的结果:
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(这里),只是因为我检查过的大多数问答都在使用 urllib。
最佳答案
在 @ton1c 说一切都对他有用之后,我尝试从另一个系统运行 wget,它工作得很好。我使用 Filezilla 向服务器传输文件或从服务器传输文件,因此我通过使用浏览器导航到服务器上的实际图像来检查图像,并且所有图像都正常呈现。显然,使用 Filezilla 将它们下载到我的计算机上导致了损坏。这是一个不同的问题,但只是一个小问题,我会自己解决。
关于python - 使用 Python 从 URL 下载图像给出损坏的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202158/