我正在编写一个脚本来从其 URL 下载 Steam 个人资料图片,由 Steam API 提供。无论我使用哪种方法,我都会得到损坏的结果:
使用“请求”库:
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。