我试图在 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
图像。
这给我留下了两个问题:
- 我如何使用 Python 下载这样的图像?
- 为什么图像甚至有
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
原文由 Jan Schultke 发布,翻译遵循 CC BY-SA 4.0 许可协议
可以帮你…
我做了这个 脚本,但从未完成(最终目的是让它每天自动运行)
但为了不成为那种推迟回答的人,这里是您感兴趣的一段代码:
希望它能帮助你!
已编辑
PS: 使用python3
完整脚本