Python采集情感音頻的實現(xiàn)示例
前言
我最近喜歡去聽情感類的節(jié)目,比如說,婚姻類,我可能老了吧。我就想著怎么把音樂下載下來了,保存到手機上,方便我們業(yè)余時間去聽。
發(fā)送請求
首先,我們要確定我們的目標網(wǎng)址,我們想要獲取到每一個音頻的地址。
我們發(fā)送請求,獲取網(wǎng)頁源代碼。我們相信大家這里的代碼都會寫了。
url = 'https://www.ximalaya.com/album/37453303' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', } res = requests.get(url,headers=headers)
requests
是 Python 的一個內(nèi)置模塊,用于發(fā)送 HTTP 請求。在這個例子中,我們使用 requests.get()
函數(shù)向 https://www.ximalaya.com/album/37453303
發(fā)送一個 GET 請求,并將請求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。
獲取數(shù)據(jù)
info_list = re.findall('"tracks":[(.*?)]', res.text)[1] print(info_list)
子字符串列表中的第一個元素就是我們要找的 tracks
字符串。我們將其存儲在 info_list
變量中,并使用 print()
函數(shù)輸出。
我們發(fā)現(xiàn),我們想要的數(shù)據(jù),就在我們匹配的內(nèi)容中。里面包含了每一個音樂的標題和其id,我們接下來把這個獲取下來。
注意,這里,不是json數(shù)據(jù),所以,我們只能正則去匹配。
解析數(shù)據(jù)
我們通過對比url發(fā)現(xiàn),我們只需要拿到uid,就可以直接訪問到音頻。這里就不多解釋。
audio = f'https://www.ximalaya.com/revision/play/v1/audio?id={trackId}&ptype=1'
我們只需要把trackID換掉,就可以了。請求上面的url,就可以拿到音頻的地址。接下來,我們寫代碼。
for trackId, title in zip(trackIds, titles): audio = f'https://www.ximalaya.com/revision/play/v1/audio?id={trackId}&ptype=1' print(audio) audio_res = requests.get(audio, headers=headers) audio_url = audio_res.json()['data']['src'] print(audio_url)
zip()
函數(shù)用于將兩個列表合并成一個列表。在這個例子中,我們使用 zip()
函數(shù)將 trackIds
和 titles
兩個列表合并成一個列表,并將其存儲在 trackIds
變量中。
然后,我們將 trackId
和 title
轉(zhuǎn)換為字符串格式,并將其存儲在 audio
變量中。
接下來,我們使用 requests.get()
函數(shù)向 audio
發(fā)送一個 GET 請求,并將請求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。最后,我們使用 json()
方法將響應(yīng)體中的 data
字段轉(zhuǎn)換為 JSON 格式,并使用 ['data']['src']
取出了 src
屬性,即 audio_url
的值,并將其存儲在 audio_url
變量中。
保存數(shù)據(jù)
music_content = requests.get(audio_url, headers=headers).content with open('music//' + f'{title}' + '.mp3', mode='wb') as filename: filename.write(music_content) print(title, '保存成功')
接下來,我們請求這個網(wǎng)頁,保存二進制到本地。with open()
語句用于自動關(guān)閉文件,確保文件在使用完畢后被正確關(guān)閉。在這個例子中,我們使用 with open()
語句打開一個名為 music//
+ title
+ .mp3
的文件,并將其保存到變量filename
中。
然后,我們使用 write()
方法將音頻內(nèi)容寫入文件中。
總結(jié)
這是一個關(guān)于如何下載音樂并保存到手機的Python代碼實戰(zhàn)。我們首先確定我們的目標網(wǎng)址,然后使用requests.get()
函數(shù)向該網(wǎng)址發(fā)送一個 GET 請求,并將請求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。
在請求成功后,我們使用json()
方法將響應(yīng)體中的 data
字段轉(zhuǎn)換為 JSON 格式,并使用['data']['src']
取出了 src
屬性,即 audio_url
的值,并將其存儲在 audio_url
變量中。
我們請求網(wǎng)頁,保存二進制,就可以保存了。
到此這篇關(guān)于Python采集情感音頻的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python采集情感音頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)數(shù)據(jù)預處理之填充缺失值的示例
下面小編就為大家分享一篇python實現(xiàn)數(shù)據(jù)預處理之填充缺失值的示例。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12python基于pygame實現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
這篇文章主要介紹了python基于pygame實現(xiàn)響應(yīng)游戲中事件的方法,實例分析了Python基于pygame針對鍵盤及鼠標事件的響應(yīng)方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11