Python爬虫|爬取喜马拉雅音频
?
"GOOD
Python爬蟲|爬取喜馬拉雅音頻
????喜馬拉雅是知名的專業(yè)的音頻分享平臺,用戶規(guī)模突破4.8億,匯集了有聲小說,有聲讀物,兒童睡前故事,相聲小品等數(shù)億條音頻,成為國內(nèi)發(fā)展最快、規(guī)模最大的在線移動(dòng)音頻分享平臺。今晚分享突破障礙,探秘喜馬拉雅的天籟之音,實(shí)現(xiàn)實(shí)時(shí)抓取,并保存到本地!
知識點(diǎn):
開發(fā)環(huán)境:windows pycharm requests?json
網(wǎng)絡(luò)反爬技術(shù)
文件的操作
網(wǎng)絡(luò)請求
數(shù)據(jù)的轉(zhuǎn)換
數(shù)據(jù)類型的使用
?
?
1.????首先導(dǎo)入requests庫
import requests
?
6.????將上面獲得的json數(shù)據(jù)轉(zhuǎn)換成字典格式(需要導(dǎo)入json模塊)
import json
?
4.????header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"}
這是應(yīng)對反爬蟲機(jī)制,偽裝成合法瀏覽器而添加,本來復(fù)制過來的是User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36因python不識別User-Agent,所以將User-Agent用引號引起來,同時(shí)將冒號后面的內(nèi)容也用引號引起來即可,這樣就有了合法信息;該信息的位置:按F12->Network->headers->RequestHeaders->User-Agent: Mozilla/5.0...詳見下圖
?
?
2.????設(shè)置url,鏈接的獲取方式:
打開喜馬拉雅官網(wǎng)->點(diǎn)擊“輕音樂”->點(diǎn)擊“夜色鋼琴曲”->選擇一首歌后會出現(xiàn)播放按鈕(先不要點(diǎn)此按鈕)->按F12->點(diǎn)擊Network->點(diǎn)擊播放按鈕->此時(shí)調(diào)試窗口會彈出播放請求->點(diǎn)擊name下的第一欄album?....->點(diǎn)擊右邊欄Headers->展開General->復(fù)制Request URL下的網(wǎng)址https://www.ximalaya.com/revision/play/album?albumId...即可
?url = "https://www.ximalaya.com/revision/play/album?albumId=291718&pageNum=1&sort=1&pageSize=30"
?
?
?
?
3????將獲取的數(shù)據(jù)賦值給response,打印response
?response = requests.get(url).text
?print(response)
結(jié)果未獲取到數(shù)據(jù),因?yàn)榫W(wǎng)站做了反爬蟲機(jī)制,所以要在上面添加header偽裝成合法身份
?
5.?????因?yàn)樯厦嫣砑恿薶eader變量,所以應(yīng)該把第3步替換為:
response = requests.get(url,headers = header).text
print(response)
?
?
添加header后,重新運(yùn)行獲得了數(shù)據(jù)(JSON格式);復(fù)制下面的獲取的數(shù)據(jù),打開網(wǎng)址http://www.bejson.com/,在輸入框中粘貼剛才的數(shù)據(jù),點(diǎn)擊“格式化校驗(yàn)”即可辨別是什么格式的文件;JSON類型為str,字典的類型為dict;它們的區(qū)別:d ={'name':'zs','gender':'man'} ===>是字典類型;而 s ='{'name':'zs','gender':'man'}' ===>是字符串類型,是JSON格式的字符串
?
7.????轉(zhuǎn)換后賦值給audio_data(可在剛才判斷類型的工具中查看一層一層的關(guān)系)
audio_data = json.loads(response)['data']['tracksAudioPlay']
?
?
8.????循環(huán)遍歷鏈接及文件名
for audio_info in audio_data:
? ? music_url = audio_info['src']
? ? music_name = music_url.split('/')[-1]
?
?
9.????將獲得的數(shù)據(jù)保存在硬盤music中
?
?
鼠標(biāo)左鍵點(diǎn)擊左邊欄的music文件夾,將其打開,右鍵隨便一首歌曲,點(diǎn)擊“show in explorer”即可打開音頻文件。
?
?
?注意事項(xiàng)
?
代碼操作的順序是1-9,完整順序是1,6,4,2,3,5,7,8,9;
這是因?yàn)榇a存在BUG?的時(shí)候要不斷的添加刪除項(xiàng)
?
?
?
?
?
學(xué)的到東西的事情是鍛煉,學(xué)不到的是磨練,所以我一直走在練的路上。
共享新方式
長按識別二維碼,關(guān)注我們
?
轉(zhuǎn)載于:https://www.cnblogs.com/RyanLea/p/11072070.html
總結(jié)
以上是生活随笔為你收集整理的Python爬虫|爬取喜马拉雅音频的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业与个人短视频变现技巧
- 下一篇: Python实用模块