前幾天有一個小任務,就是把一個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