说明: 上一篇只是把image表格存入到数据库,后序又存入了classname表格,bbox表格等,通过连接查询最终获取到想要的所有url地址。采用简单粗糙的方法,把获取到的url地址全部存储到txt文件中,之后通过读取txt文件中的内容下载图片到本地。
1.前提说明
-
ladder.txt
2.出现问题
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
解决参考:
https://stackoverflow.com/questions/49183801/ssl-certificate-verify-failed-with-urllib
所以最后的程序为:
# -*- coding: utf-8 -*-
# 根据图片链接列表获取图片保存到本地
from urllib.request import urlretrieve
import os
# 解决
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
'''
通过txt网址文件,现在图片到本地
'''
def download():
categories = ['ladder']
for category in categories:
# 新建存储ladder文件夹存储图片
os.makedirs('data/%s' % category, exist_ok=True)
# 读取txt文件
with open('%s.txt' % category, 'r') as file:
urls = file.readlines()
# 计算链接地址条数
n_urls = len(urls)
# 遍历链接地址下载图片
for i, url in enumerate(urls):
try:
# 请求下载图片,并截取最后链接第一最后一节字段命名图片
urlretrieve(url.strip(), 'data/%s/%s' % (category, url.strip().split('/')[-1]))
print('%s %i/%i' % (category, i, n_urls))
except:
print('%s %i/%i' % (category, i, n_urls), 'no image')
if __name__ == '__main__':
download();
3. 补充说明
其实在刚运行代码时,总是进入except运行,之后在测试过程中print(url.strip())都是可以打印出正确的链接地址,点击链接也可以查看到图片,所以就测试直接打印 print( urlretrieve(url.strip(), 'data/%s/%s' % (category, url.strip().split('/')[-1]))), 此时输出错误:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
4.参考
https://stackoverflow.com/questions/49183801/ssl-certificate-verify-failed-with-urllib
https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/5-16-transfer-learning/