urlretrieve 不适用于此站点

urlretrieve not working for this site

我正在尝试下载一张图片,但它似乎确实有效。是不是被ddos保护屏蔽了?

代码如下:

urllib.request.urlretrieve("http://archive.is/Xx9t3/scr.png", "test.png")

基本上下载该图像为 "test.png." 我正在使用 python3 因此 urllib.request 在 urlretrieve 之前。

import urllib.request

也有。

有什么办法可以下载图片吗?谢谢!

我建议你使用 requests,基本上 你试图获取图像的方式 是被禁止的,检查一下:

import requests
import shutil

r = requests.get('http://archive.is/Xx9t3/scr.png', stream=True)
if r.status_code == 200:
    with open("test.png", 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)

此片段改编自

这背后的魔法是如何检索资源的,requests那部分是stream=True行。有些服务器使用这种方法更受限制,无法提取媒体等资源。

由于我什至无法想象的原因,服务器需要一个众所周知的用户代理。所以你必须假装使用例如 firefox,它会接受发送图像:

# first build a request object
req = urllib.request.Request("http://archive.is/Xx9t3/scr.png",
        headers = {
           'User-agent':
              'Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0'})

#then use it
resp = urllib.request.urlopen(req)
with open("test.png","wb") as fd:
    fd.write(resp.read())

相当愚蠢,但是当服务器管理员发疯时,就和他一样愚蠢...