批量下载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
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值