Der Server Ihre Anfrage ablehnt, weil er erkennt, dass Sie das Bild von einem Python-Skript zu holen, indem Sie auf Wunsch den User-Agent-Header inspizieren. Sie können einen anderen User-Agent-Header hinzufügen, um den Standard zu überschreiben und eine Anfrage von einem Browser nachzuahmen.
>>> import urllib2
>>> url = "http://charlesngo.com/wp-content/uploads/2015/11/rat-race-full-res-1030x728.jpg"
>>> req = urllib2.Request(url)
>>> resp = urllib2.urlopen(req)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib64/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib64/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/usr/lib64/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib64/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
>>> req = urllib2.Request(url)
>>> req.add_header('user-agent', "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11")
>>> resp = urllib2.urlopen(req)
>>> resp.read()[:10]
'\xff\xd8\xff\xe0\x00\x10JFIF'
Siehe this question für mehr auf den User-Agent-Header zu setzen.
Es ist erwähnenswert, dass der Serveradministrator versucht, geskriptete Downloads aus einem bestimmten Grund zu blockieren - z. B. Bandbreitenkosten - also sollten Sie überlegen, ob das Umgehen des Sperrmechanismus eine akzeptable Aktion ist, besonders wenn Sie den Download häufig ausführen.
Verwenden Sie 'urllib2.urlopen' oder' urllib.urlretrieve'? Deine Frage sagt eine, dein Beispiel die andere. Bitte bearbeiten Sie Ihre Frage, um sich auf die richtige Funktion zu beziehen. – snakecharmerb
Oh, das ist ein Tippfehler, aber ich habe beide Alternativen ausprobiert, beide funktionieren nicht – codeomnitrix