python - 如何在 Python 3 中使用 https URL 下载图像?

标签 python image https download

我尝试用 Python 编写一个简短的批量下载脚本来在本地存储图像列表。

对于 http 图片 url,它工作得很好,但是无法下载任何带有 https url 的图片。有问题的代码行是:

import urllib.request
urllib.request.urlretrieve(url, filename)

例如, https://cdn.discordapp.com/attachments/299398003486097412/303580387786096641/FB_IMG_1490534565948.jpg 导致 HTTP Error 403: Forbidden,以及任何其他 https 图片。

这留给我两个问题:

  1. 如何使用 Python 下载这样的图像?
  2. 如果图像基本上只是文件,为什么它们甚至有 https url?

编辑:

这是堆栈跟踪:

Traceback (most recent call last):
  File "img_down.py", line 52, in <module>
    main()
  File "img_down.py", line 38, in main
    save_img(d, l)
  File "img_down.py", line 49, in save_img
    stream = read_img(url)
  File "img_down.py", line 42, in read_img
    with urllib.request.urlopen(url) as response:
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "D:\Users\Jan\AppData\Local\Programs\Python\Python36-32\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

最佳答案

希望这对您有所帮助。

import requests
with open('FB_IMG_1490534565948.jpg', 'wb') as f:
    f.write(requests.get('https://url/to/image.jpg').content)

关于python - 如何在 Python 3 中使用 https URL 下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462896/

相关文章:

image - 如何清除用户窗体中的图像?

android - android 应用程序 : javax.net.ssl.SSLPeerUnverifiedException 中的错误:没有对等证书

javascript - 将网站重定向到 HTTPS 并进行有限重试?

python - SQLAlchemy - 如何使用连接选择 x.id IS NOT NULL AS?

python - 如何确定 Python 脚本是否通过命令行运行?

python - Pandas 根据多列中的值填充列中的 na

ios - CoreImage CIColorClamp 调整到错误的值

html - 使用 HTML 将图像彼此相邻添加时删除垂直空间

javascript - Node.JS HTTPS 问题 TypeError : Cannot read property 'writeQueueSize' of null

python - python -m unittest 执行什么功能?