python - 使用 Python 从 URL 下载图像给出损坏的结果

标签 python image download urllib python-requests

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

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(这里),只是因为我检查过的大多数问答都在使用 urllib。

最佳答案

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

关于python - 使用 Python 从 URL 下载图像给出损坏的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202158/

相关文章:

多行的 Python 嵌套上下文管理器

jquery - Fancybox 图像消失

image - 图像像素包含哪些信息?

java - 下载 .torrent 文件 Java

c# - 我用C#代码下载文件时出现错误

python - 使用模拟库来修补类方法

python - 在 python 中排序枚举值

c++ - 如何制作更具表现力的 python 迭代器?就像 C++ 迭代器一样

html - CSS - 为图像周围的文字留出足够的水平空间

java - 为什么当我使用 SwingWorker 时我的图像无法下载,但当我不使用 SwingWorker 时却可以下载?