如何从url中下载图片

因为要下载一个表情识别的数据库,作者给的不是图片,而是一个写好了的excel文件,里面几万行url,头疼!直接给打包好了的图片链接,岂不美哉。没办法,谁叫别人是大佬呢,只有自己写写代码,好好下载吧。

思路

  1. 首先使用pandas读取excel文件,读出某一列的属性值。
  2. 遍历每一行,获取到可用的url,有些加了引号之类的,需要去除掉。
  3. 截取出url中的末尾文件名,方便存储,再使用urllib.request.urlretrieve()函数读取并保存文件。

代码如下

import os
import csv
import pandas as pd
#from urllib.request import urlretrieve
import urllib.request
def read_file(filename):

    file_path = os.path.join(os.getcwd(),filename)
    # 使用pandas访问Excel文件,并读取url列
    df = pd.read_excel(file_path)["URL"]

    # 行数
    url_len = df.shape[0]
    print(df[0])
    for i in range(url_len):
        # 对每个url去除引号
        url = df[i].strip("'")
        print("pic_url:",url)
        # 获取url末尾的文件名
        file_name = os.path.basename(url)
        print("pic_name:",file_name)

        pic_path = os.path.join(os.getcwd(),"face")
        try:
            # 下载并保存图片
            urllib.request.urlretrieve(url,os.path.join(pic_path,file_name))
        except Exception as e:
            print(e)

if __name__ == '__main__':
    file_list=["emotion_face.xlsx"]
    for i in range(len(file_list)):
        read_file(file_list[i])

注意

在下载时也遇到一些坑,作者放的图片在国外的服务器上,访问的服务器不稳定,下载时报错或者某些图片不能下载出来,这可不行。在网上找了解决办法,首先关掉防火墙,设置代理,ChromeGo这个下的蓝灯翻墙还可以用。

展开阅读全文

没有更多推荐了,返回首页