Python采集情感音頻的實(shí)現(xiàn)示例
前言
我最近喜歡去聽(tīng)情感類的節(jié)目,比如說(shuō),婚姻類,我可能老了吧。我就想著怎么把音樂(lè)下載下來(lái)了,保存到手機(jī)上,方便我們業(yè)余時(shí)間去聽(tīng)。
發(fā)送請(qǐng)求
首先,我們要確定我們的目標(biāo)網(wǎng)址,我們想要獲取到每一個(gè)音頻的地址。
我們發(fā)送請(qǐng)求,獲取網(wǎng)頁(yè)源代碼。我們相信大家這里的代碼都會(huì)寫(xiě)了。
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 的一個(gè)內(nèi)置模塊,用于發(fā)送 HTTP 請(qǐng)求。在這個(gè)例子中,我們使用 requests.get()
函數(shù)向 https://www.ximalaya.com/album/37453303
發(fā)送一個(gè) GET 請(qǐng)求,并將請(qǐng)求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。
獲取數(shù)據(jù)
info_list = re.findall('"tracks":[(.*?)]', res.text)[1] print(info_list)
子字符串列表中的第一個(gè)元素就是我們要找的 tracks
字符串。我們將其存儲(chǔ)在 info_list
變量中,并使用 print()
函數(shù)輸出。
我們發(fā)現(xiàn),我們想要的數(shù)據(jù),就在我們匹配的內(nèi)容中。里面包含了每一個(gè)音樂(lè)的標(biāo)題和其id,我們接下來(lái)把這個(gè)獲取下來(lái)。
注意,這里,不是json數(shù)據(jù),所以,我們只能正則去匹配。
解析數(shù)據(jù)
我們通過(guò)對(duì)比url發(fā)現(xiàn),我們只需要拿到uid,就可以直接訪問(wèn)到音頻。這里就不多解釋。
audio = f'https://www.ximalaya.com/revision/play/v1/audio?id={trackId}&ptype=1'
我們只需要把trackID換掉,就可以了。請(qǐng)求上面的url,就可以拿到音頻的地址。接下來(lái),我們寫(xiě)代碼。
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ù)用于將兩個(gè)列表合并成一個(gè)列表。在這個(gè)例子中,我們使用 zip()
函數(shù)將 trackIds
和 titles
兩個(gè)列表合并成一個(gè)列表,并將其存儲(chǔ)在 trackIds
變量中。
然后,我們將 trackId
和 title
轉(zhuǎn)換為字符串格式,并將其存儲(chǔ)在 audio
變量中。
接下來(lái),我們使用 requests.get()
函數(shù)向 audio
發(fā)送一個(gè) GET 請(qǐng)求,并將請(qǐng)求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。最后,我們使用 json()
方法將響應(yīng)體中的 data
字段轉(zhuǎn)換為 JSON 格式,并使用 ['data']['src']
取出了 src
屬性,即 audio_url
的值,并將其存儲(chǔ)在 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, '保存成功')
接下來(lái),我們請(qǐng)求這個(gè)網(wǎng)頁(yè),保存二進(jìn)制到本地。with open()
語(yǔ)句用于自動(dòng)關(guān)閉文件,確保文件在使用完畢后被正確關(guān)閉。在這個(gè)例子中,我們使用 with open()
語(yǔ)句打開(kāi)一個(gè)名為 music//
+ title
+ .mp3
的文件,并將其保存到變量filename
中。
然后,我們使用 write()
方法將音頻內(nèi)容寫(xiě)入文件中。
總結(jié)
這是一個(gè)關(guān)于如何下載音樂(lè)并保存到手機(jī)的Python代碼實(shí)戰(zhàn)。我們首先確定我們的目標(biāo)網(wǎng)址,然后使用requests.get()
函數(shù)向該網(wǎng)址發(fā)送一個(gè) GET 請(qǐng)求,并將請(qǐng)求頭和響應(yīng)體作為參數(shù)傳遞給函數(shù)。
在請(qǐng)求成功后,我們使用json()
方法將響應(yīng)體中的 data
字段轉(zhuǎn)換為 JSON 格式,并使用['data']['src']
取出了 src
屬性,即 audio_url
的值,并將其存儲(chǔ)在 audio_url
變量中。
我們請(qǐng)求網(wǎng)頁(yè),保存二進(jìn)制,就可以保存了。
到此這篇關(guān)于Python采集情感音頻的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Python采集情感音頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
這篇文章主要介紹了python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能,本文通過(guò)實(shí)例截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11IntelliJ IDEA安裝運(yùn)行python插件方法
在本篇文章里我們給大家分享關(guān)于IntelliJ IDEA安裝運(yùn)行python插件方法,對(duì)此有需求的讀者們可以跟著步驟學(xué)習(xí)下2018-12-12Python語(yǔ)言描述機(jī)器學(xué)習(xí)之Logistic回歸算法
這篇文章主要介紹了Python語(yǔ)言描述機(jī)器學(xué)習(xí)之Logistic回歸算法,涉及Sigmoid函數(shù),梯度上升法等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12python實(shí)現(xiàn)數(shù)據(jù)預(yù)處理之填充缺失值的示例
下面小編就為大家分享一篇python實(shí)現(xiàn)數(shù)據(jù)預(yù)處理之填充缺失值的示例。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12解決jupyter運(yùn)行pyqt代碼內(nèi)核重啟的問(wèn)題
這篇文章主要介紹了解決jupyter運(yùn)行pyqt代碼內(nèi)核重啟的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04解決Python網(wǎng)頁(yè)爬蟲(chóng)之中文亂碼問(wèn)題
今天小編就為大家分享一篇解決Python網(wǎng)頁(yè)爬蟲(chóng)之中文亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
這篇文章主要介紹了python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法,實(shí)例分析了Python基于pygame針對(duì)鍵盤(pán)及鼠標(biāo)事件的響應(yīng)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11