最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲實戰(zhàn)之網(wǎng)易云音樂加密解析附源碼

 更新時間:2021年10月15日 08:51:36   作者:松鼠愛吃餅干  
讀萬卷書不如行萬里路,學(xué)的扎不扎實要通過實戰(zhàn)才能看出來,本篇文章手把手帶你解析網(wǎng)易云音樂數(shù)據(jù),大家可以在實戰(zhàn)過程中更有效的掌握python

環(huán)境

  •  python3.8
  • pycharm2021.2

知識點

  • requests >>> pip install requests
  • execjs >>> pip install PyExecJS

第一步

打開這個網(wǎng)站 在里面去分析我們需要的數(shù)據(jù) 每個音樂的名稱 id

去網(wǎng)頁源代碼查找數(shù)據(jù),發(fā)現(xiàn)并沒有,這個網(wǎng)頁 并不是一個靜態(tài)頁面

打開開發(fā)者工具,找到歌曲的id

找到真正的目標網(wǎng)址https://music.163.com/discover/toplist

【付費VIP完整版】只要看了就能學(xué)會的教程,80集Python基礎(chǔ)入門視頻教學(xué)

點這里即可免費在線觀看

第二步

通過代碼去實現(xiàn)當(dāng)前這一個步驟

  • 通過代碼去訪問當(dāng)這個頁面 – 拿到網(wǎng)頁源代碼
  • 提取我們真正想要的 音樂的名稱 id
  • 下載音樂: id獲取是為了下載音樂分析里面音樂數(shù)據(jù)的 加密規(guī)則 去下載歌曲

開始代碼

先導(dǎo)入所需模塊

import requests
import re
import execjs

請求數(shù)據(jù)

# 通過代碼去訪問當(dāng)這個頁面 -- 拿到網(wǎng)頁源代碼
url = 'https://music.163.com/discover/toplist'
# 偽裝
headers = {
    'cookie': '_ntes_nuid=063717de540d3ec18d9b4a0bdf51e931; WM_TID=sxztjH%2FJbYZBEREFBQZvAgttUnJPrvYf; ntes_kaola_ad=1; NMTID=00OSBNvfChgV2TD7k5IhSzky6R8lXgAAAF0zoWmoA; _ntes_nnid=063717de540d3ec18d9b4a0bdf51e931,1607344992641; _iuqxldmzr_=32; OUTFOX_SEARCH_USER_ID_NCOO=2145381542.3273497; WEVNSM=1.0.0; WNMCID=sazafu.1624080681192.01.0; UM_distinctid=17b784cb58a17-097be09ee87fb9-c343365-1aeaa0-17b784cb58b8bc; __root_domain_v=.163.com; _qddaz=QD.159230735652240; vinfo_n_f_l_n3=11aae7905aa2179b.1.11.1575470964063.1625470009945.1632894007779; usertrack=ezq0J2FlcQWNYypxAx88Ag==; JSESSIONID-WYYY=Yvm62%5Cnd8XNkT2ryCNOJx9urqXsxCDMF6srNnGRegtmuNdB5MrrS9ou%2FWw3JbVf960uHnGW3Bb%2Fbhv2xZm3Vn%2B%2BonZSX38sqKiUMuRd6TDKD39HRzGmrZ%5Cp9IUaNs%5C5nYt9xltJBt5qRgWsl0PZsxDhSu26ugGAozPffXXAjemm0o%2Fv%5C%3A1634111694844; WM_NI=au9XpuutN3GwymEoZsAgWl6%2BH4cTcHgYKos%2BWibR3hSntTQhrpX%2FLoCAycOKLnZteLb1LlluoIk9jlKxaaUThS4tfZr9jWB3LVjXKQUH4%2BMpukbEPcnHaN80J8%2FhoqeeYms%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee8de74b85b18eb3b27bae8e8ab2d44e969f9aafae3388af8f98d06da59b968ecf2af0fea7c3b92aa3abf7b9f37fb7ac82d4c67dbbb38b90d97983b9998db5218cecadb5e244a5878590f22195b7aeb3b26491b2bcb5d464b2b098d0cf65819fb784ce4190b29695e848a2ef848def7fad97a5dae96889a8af82d860ac8dfc95e552b2e7a6b8c139908aa6b9ca5b9798fcccd07cb7b5aea6d369ae98afafbb3c8ae8e189ee7ba7bb978ef237e2a3; playerid=29374327',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
# url: 分析出來的真正數(shù)據(jù)鏈接
# headers: 偽裝請求頭
response = requests.get(url, headers).text
# <Response [200]>: 告訴你訪問成功了

提取我們真正想要的 音樂的名稱 id

zip_data = re.findall('<li><a href="/song\?id=(.*?)" rel="external nofollow"  rel="external nofollow" >(.*?)</a></li>', response)
for music_id, title in zip_data:
    # url_1 = 'http://music.163.com/song/media/outer/url?id=' + music_id
    url_1 = 'https://music.163.com/weapi/song/enhance/player/url/v1?csrf_token='
    result = ctx.call('start', music_id)
    data = {
        'params': result['encText'],
        'encSecKey': result['encSecKey']
    }
    # 發(fā)送請求
    # 當(dāng)前的音樂數(shù)據(jù)
    music_url = requests.post(url_1, data=data, headers=headers).json()['data'][0]['url']
    music_data = requests.get(music_url, headers).content
    title = re.sub(r'[/\\:*?"<>|]', '_', title)

導(dǎo)入js文件

# js文件導(dǎo)入
js = open('music163.js', mode='r', encoding='utf-8').read()
ctx = execjs.compile(js)

保存文件

with open('music/' + title + '.mp3', mode='wb') as f:
    f.write(music_data)
print(title)

完整代碼

import requests
import re
import execjs

url = 'https://music.163.com/discover/toplist'
# 偽裝
headers = {
    'cookie': '_ntes_nuid=063717de540d3ec18d9b4a0bdf51e931; WM_TID=sxztjH%2FJbYZBEREFBQZvAgttUnJPrvYf; ntes_kaola_ad=1; NMTID=00OSBNvfChgV2TD7k5IhSzky6R8lXgAAAF0zoWmoA; _ntes_nnid=063717de540d3ec18d9b4a0bdf51e931,1607344992641; _iuqxldmzr_=32; OUTFOX_SEARCH_USER_ID_NCOO=2145381542.3273497; WEVNSM=1.0.0; WNMCID=sazafu.1624080681192.01.0; UM_distinctid=17b784cb58a17-097be09ee87fb9-c343365-1aeaa0-17b784cb58b8bc; __root_domain_v=.163.com; _qddaz=QD.159230735652240; vinfo_n_f_l_n3=11aae7905aa2179b.1.11.1575470964063.1625470009945.1632894007779; usertrack=ezq0J2FlcQWNYypxAx88Ag==; JSESSIONID-WYYY=Yvm62%5Cnd8XNkT2ryCNOJx9urqXsxCDMF6srNnGRegtmuNdB5MrrS9ou%2FWw3JbVf960uHnGW3Bb%2Fbhv2xZm3Vn%2B%2BonZSX38sqKiUMuRd6TDKD39HRzGmrZ%5Cp9IUaNs%5C5nYt9xltJBt5qRgWsl0PZsxDhSu26ugGAozPffXXAjemm0o%2Fv%5C%3A1634111694844; WM_NI=au9XpuutN3GwymEoZsAgWl6%2BH4cTcHgYKos%2BWibR3hSntTQhrpX%2FLoCAycOKLnZteLb1LlluoIk9jlKxaaUThS4tfZr9jWB3LVjXKQUH4%2BMpukbEPcnHaN80J8%2FhoqeeYms%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee8de74b85b18eb3b27bae8e8ab2d44e969f9aafae3388af8f98d06da59b968ecf2af0fea7c3b92aa3abf7b9f37fb7ac82d4c67dbbb38b90d97983b9998db5218cecadb5e244a5878590f22195b7aeb3b26491b2bcb5d464b2b098d0cf65819fb784ce4190b29695e848a2ef848def7fad97a5dae96889a8af82d860ac8dfc95e552b2e7a6b8c139908aa6b9ca5b9798fcccd07cb7b5aea6d369ae98afafbb3c8ae8e189ee7ba7bb978ef237e2a3; playerid=29374327',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}

response = requests.get(url, headers).text
zip_data = re.findall('<li><a href="/song\?id=(.*?)" rel="external nofollow"  rel="external nofollow" >(.*?)</a></li>', response)
js = open('music163.js', mode='r', encoding='utf-8').read()
ctx = execjs.compile(js)
for music_id, title in zip_data:
    url_1 = 'https://music.163.com/weapi/song/enhance/player/url/v1?csrf_token='
    result = ctx.call('start', music_id)
    data = {
        'params': result['encText'],
        'encSecKey': result['encSecKey']
    }
    music_url = requests.post(url_1, data=data, headers=headers).json()['data'][0]['url']
    music_data = requests.get(music_url, headers).content
    title = re.sub(r'[/\\:*?"<>|]', '_', title)
    with open('music/' + title + '.mp3', mode='wb') as f:
        f.write(music_data)
    print(title)

到此這篇關(guān)于Python爬蟲實戰(zhàn)之網(wǎng)易云音樂加密解析附源碼的文章就介紹到這了,更多相關(guān)Python 網(wǎng)易云音樂解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 輸入一個數(shù)n,求n個數(shù)求乘或求和的實例

    python 輸入一個數(shù)n,求n個數(shù)求乘或求和的實例

    今天小編就為大家分享一篇python 輸入一個數(shù)n,求n個數(shù)求乘或求和的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python使用urllib2獲取網(wǎng)絡(luò)資源實例講解

    Python使用urllib2獲取網(wǎng)絡(luò)資源實例講解

    urllib2是Python的一個獲取URLs(Uniform Resource Locators)的組件。他以urlopen函數(shù)的形式提供了一個非常簡單的接口,下面我們用實例講解他的使用方法
    2013-12-12
  • Python學(xué)習(xí)之if 條件判斷語句

    Python學(xué)習(xí)之if 條件判斷語句

    篇文章主要介紹了Python if 條件判斷語句,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • Python+Tkinter打造簽名設(shè)計工具

    Python+Tkinter打造簽名設(shè)計工具

    這篇文章主要為大家分享如何利用Python Tkinter庫制作帶圖形界面的一個簽名設(shè)計工具,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-04-04
  • Python模塊、包(Package)概念與用法分析

    Python模塊、包(Package)概念與用法分析

    這篇文章主要介紹了Python模塊、包(Package)概念與用法,結(jié)合實例形式分析了Python中模塊、包(Package)概念、功能、相關(guān)使用技巧與注意事項,需要的朋友可以參考下
    2019-05-05
  • 在Pandas中使用透視表后去掉多級索引的方法

    在Pandas中使用透視表后去掉多級索引的方法

    Pandas是一個功能強大且通用的Python庫,用于數(shù)據(jù)操作和分析,它最有用的特性之一是數(shù)據(jù)透視表,它允許您重塑和匯總數(shù)據(jù),但是,使用數(shù)據(jù)透視表通常會導(dǎo)致多級(分層)索引,在本文中,我們將探討如何在Pandas中使用透視表后去掉多級索引,需要的朋友可以參考下
    2024-12-12
  • Python實現(xiàn)圖片壓縮的案例詳解

    Python實現(xiàn)圖片壓縮的案例詳解

    這篇文章主要介紹了如何用最簡潔的Python代碼實現(xiàn)圖片壓縮效果,還可以保證照片不失真,感興趣的小伙伴可以跟隨小編一起動手試試
    2022-01-01
  • 解決seaborn在pycharm中繪圖不出圖的問題

    解決seaborn在pycharm中繪圖不出圖的問題

    今天小編就為大家分享一篇解決seaborn在pycharm中繪圖不出圖的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 基于Flask+websocket實現(xiàn)一個在線聊天室

    基于Flask+websocket實現(xiàn)一個在線聊天室

    在今天的互聯(lián)網(wǎng)時代,實時通信成為了許多應(yīng)用和服務(wù)的核心特色,在本文中,我們將介紹如何使用 Flask 和 Websockets 通過 Flask-SocketIO 框架創(chuàng)建一個簡單的在線聊天室,感興趣的可以跟隨小編一起了解下
    2023-09-09
  • Python基于百度AI實現(xiàn)OCR文字識別

    Python基于百度AI實現(xiàn)OCR文字識別

    這篇文章主要介紹了Python基于百度AI實現(xiàn)OCR文字識別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

札达县| 新闻| 阳谷县| 洛川县| 屯昌县| 东阳市| 禄丰县| 高要市| 通海县| 东乌珠穆沁旗| 云梦县| 金门县| 红原县| 锡林浩特市| 阳西县| 西安市| 平利县| 台北县| 贞丰县| 威信县| 湾仔区| 嘉祥县| 务川| 玉门市| 钦州市| 洪江市| 重庆市| 利川市| 五常市| 南木林县| 藁城市| 剑阁县| 应城市| 天峻县| 蒲城县| 苏尼特左旗| 冀州市| 泰安市| 赤城县| 沂源县| 区。|