我试图下载图片,但它似乎确实有效。是否被ddos保护阻止?
以下是代码:
urllib.request.urlretrieve("http://archive.is/Xx9t3/scr.png", "test.png")
基本上将该图像下载为" test.png。"我在urlretrieve之前使用了python3,因此使用了urllib.request。
import urllib.request
也有。
我可以用任何方式下载图片吗?谢谢!
答案 0 :(得分:1)
由于我无法想象的原因,服务器需要一个众所周知的用户代理。所以你必须假装使用例如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())
相当愚蠢,但当服务器管理员发疯时,就像他一样愚蠢......
答案 1 :(得分:0)
我建议你使用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)
此代码段改编自here
这背后的魔法是如何检索资源的,requests
该部分是stream=True
行。一些服务器受这种方法的限制,以提取媒体等资源。