我需要使用Python从URL下载图像。我正在这样做:
import requests
with requests.get(url, stream=True) as r:
with open(img_path, "wb") as f:
f.write(r.content)
为了让我在浏览器中看到图像,我需要登录该站点上的帐户。图片可能是别人或我自己发送的。
问题是我能够成功下载一些图像,但对于其他图像,则出现身份验证错误,即我尚未登录。
在这种情况下,有时也会下载内容如下的文件:
{"result":"error","msg":"Not logged in: API authentication or user session required"}
有时,它会下载网页的html文件,要求我登录以查看图像。
为什么在某些情况下而不是其他情况下会出现此错误?以及我该如何解决?
答案 0 :(得分:1)
尝试:
import requests
image_url = "https://www.python.org/static/community_logos/python-logo-master-v3-TM.png"
img_data = requests.get(image_url).content
with open('image_name.jpg', 'wb') as handler:
handler.write(img_data)
注意:
获得授权
from requests.auth import HTTPBasicAuth
img_data = requests.get('image_url', auth=HTTPBasicAuth('user', 'pass')).content
答案 1 :(得分:0)
您可以使用response.raw文件对象,也可以遍历响应。
import requests
import shutil
from requests.auth import HTTPBasicAuth
r = requests.get(url, auth=HTTPBasicAuth('user', 'pass'), stream=True)
if r.status_code == 200:
with open(path, 'wb') as f:
r.raw.decode_content = True
shutil.copyfileobj(r.raw, f)