1

我正在编写一个脚本来从其 URL 下载 Steam 个人资料图片,由 Steam API 提供。无论我使用哪种方法,我都会得到损坏的结果:

带有损坏和原始图像的示例

Steam 指向原始图像的链接

使用“请求”库:

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。

4

1 回答 1

1

在@ton1c 说一切都对他有用之后,我尝试从另一个系统运行 wget 并且它工作得很好。我正在使用 Filezilla 向/从我的服务器传输文件,因此我通过使用浏览器导航到服务器上的图像来检查服务器上的实际图像,并且所有图像都正常呈现。显然,使用 Filezilla 将它们下载到我的计算机会导致损坏。这是一个不同的问题,但我会自己解决一个小问题。

于 2013-10-05T21:44:16.013 回答