批量下载Excel中的链接中的文件

前几天有一个小任务,就是把一个Excel中的三百多个音频下载下来,这些音频都是URL的形式,于是就写了个python脚本把他们都抓了下来,因为很简单,所以就直接贴代码了:

注意:首先要把Excel转换成CSV文件的格式

import csv
import requests

# 文件路径,需要替换成自己的文件路径
file_rode = 'C:\\Users\\59990\\Desktop\\audio.csv'
# 打开文件
csv_file = csv.reader(open(file_rode, 'r', encoding='utf-8'))
# 跳过标题行
next(csv_file, None)

# 可以先用下面注释里的语句看看你文件中的URL取出来之后是什么格式的
# for url in csv_file:
#     print(url)

# 接着对里边的每一条链接做如下操作
for url in csv_file:
    # 这里需要注意的是要将取出来的URL做一个字符串类型转换,并截取其中的link的部分
    r = requests.get(str(url)[2:101])
    music = r.content
    # 目标路径需要换成你自己的路径,str(url)[90:-2]这个的意思是给文件命名
    new_url = "C:/Users/59990/Desktop/music/" + str(url)[90:-2]
    # 下面是将文件以二进制的形式写入到目标文件中
    with open(new_url, 'ab') as file:
        file.write(music)
        file.flush

总结:这次虽然是一个很简单的小脚本,但是对其中的字符串的转换那里搞了很大一会,从csv中直接读出来的数据好像不是以字符串的形式。直到现在我才明白过来,是我读取的方式不对,我那种方法是直接读取了整个csv,正确的方法应该是读取csv中的我需要的那一列,改进后的方法如下

import csv
import requests

# 文件路径,需要替换成自己的文件路径
file_rode = 'C:\\Users\\59990\\Desktop\\audio.csv'

# 打开文件
csv_file = csv.reader(open(file_rode, 'r', encoding='utf-8'))
# 跳过标题行
next(csv_file, None)

# 可以先用下面注释里的语句看看你文件中的URL取出来之后是什么格式的
# for url in csv_file:
#     print(url)

# 接着对里边的每一条链接做如下操作
for url in csv_file:
    # 这里就直接是url[0],意思是csv中的第一列的内容,不再是以表格的形式给到
    r = requests.get(url[0])
    music = r.content
    # 目标路径需要换成你自己的路径,str(url)[90:-2]这个的意思是给文件命名
    new_url = "C:/Users/59990/Desktop/music/" + str(url)[90:-2]
    # 下面是将文件以二进制的形式写入到目标文件中
    with open(new_url, 'ab') as file:
        file.write(music)
        file.flush
posted @ 2020-04-06 22:58    阅读(2293)  评论(0编辑  收藏  举报