Python读取TXT文件中的URL并下载文件

2018-11-06  本文已影响0人  myFamily329
说明: 上一篇只是把image表格存入到数据库,后序又存入了classname表格,bbox表格等,通过连接查询最终获取到想要的所有url地址。采用简单粗糙的方法,把获取到的url地址全部存储到txt文件中,之后通过读取txt文件中的内容下载图片到本地。
1.前提说明
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/

上一篇下一篇

猜你喜欢

热点阅读