python 爬取網易雲音樂歌單

Python 爬取網易雲音樂

來自嗶哩嗶哩學習視頻 爬取網易雲音樂視頻總結,也算是爲自己記個筆記吧

  1. 所需庫
    requests 點擊查看介紹
    lxml 點擊查看介紹

  2. 確定url地址
    以谷歌瀏覽器

    進入所需歌單,隨便點首歌,右鍵,檢查

    找到network—XHR,如果沒有內容,刷新一下,接下來可看到如圖

在這裏插入圖片描述
可看到所需歌曲的url
https://m801.music.126.net/20191203211801/8a4fe99967c7a8b03ef13992bed3e408/jdyyaac/075b/560e/515a/01d7ceed01adc38a2402f0bce5efa4fa.m4a

用瀏覽器直接瀏覽,可播放歌曲

也就是可以用python來訪問這個網址

#導入庫(框架,模塊)
import requests

#1.確定url(網址,統一資源定位)地址
url = "https://m801.music.126.net/20191203211801/8a4fe99967c7a8b03ef13992bed3e408/jdyyaac/075b/560e/515a/01d7ceed01adc38a2402f0bce5efa4fa.m4a"

#2.請求
music=requests.get(url).content

#4.保存
#後面的wb,是允許寫入二進制的
with open('mysic.m4a','wb') as file:
    file.write(music)

https://www.jianshu.com/p/c00df845323c with as 用法

下載成功

如果要下整個歌單,這種方法肯定是不行的
這是一場爬蟲與反爬蟲的較量

看到headers
爲post請求,肯定會被加密
如圖網址爲外鏈地址
在這裏插入圖片描述
不過有個外鏈轉化工具幫我們解決一切

在這裏插入圖片描述

幹起來

#導入庫(框架,模塊)
import requests
from lxml import etree


#1.確定url(網址,統一資源定位)地址,歌單地址,利用xpath得到每首歌的外鏈地址
url="https://music.163.com/playlist?id=10702884"
base_url='https://link.hhtjim.com/163/'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
}

#2.請求
result=requests.get(url,headers=headers).text

#3.刪選數據
dom=etree.HTML(result)
ids = dom.xpath('//a[contains(@href,"/song?")]/@href')
#print(ids)
#https://link.hhtjim.com/163/347230.mp3
for songid in ids:
    #print(songid)
    count_id=songid.strip('/song?id=')
    #print(count_id)
    if ('$' in count_id) == False:
        music_url = base_url+'%s'%count_id+'.mp3'
        print(music_url)

        music=requests.get(music_url).content
        #4.保存
        with open('./music_wangyi/%s.mp3'%count_id,'wb') as file:
            file.write(music)

下載成功
Vip的也可以下載,不過很容易被發現,但我們只是爲了學習而已

發佈了20 篇原創文章 · 獲贊 6 · 訪問量 4913
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章