手把手教你使用Python抓取QQ音樂數據(第一彈)

【1、項目目標】數據庫

獲取 QQ 音樂指定歌手單曲排行指定頁數的歌曲的歌名、專輯名、播放連接。json

由淺入深,層層遞進,很是適合剛入門的同窗練手。服務器


【2、須要的庫】網絡

主要涉及的庫有:requests、json、openpyxlide


【3、項目實現】學習

1.瞭解 QQ 音樂網站的 robots 協議網站

dc3e867a56f64468af5dba1adc6b2ea0


只禁止播放列表,能夠操做。url

2.進入 QQ 音樂主頁 https://y.qq.com/spa

3.輸入任意歌手,好比鄧紫棋3d

3faec7e0c69243ef820be8e739b3eb8b


4.打開審查元素(快捷鍵 Ctrl+Shift+I)

b0a2a4189e034467ab11ebd4fb1bf8fd


5.分析網頁源代碼 Elements,發現無歌曲信息,沒法使用 BeautifulSoup,以下圖所示,結果爲空。

c69c4172be0d4f18a338b18c94a07a2c


c414874066ca4b8f83a446c20dfc7a7a


6.點擊 Network,看數據在不在 XHR(無刷新更新頁

面),個人經驗是先看 Size 最大的,而後分析 Name,

查看 Preview,果真在裏面!

75cac38587a54a6692fc6804efeb25e3


c2acd34a479848b592c57cfe0d83de61


7.點擊 Headers,拿到相關參數。以下圖,仔細觀察

url 與 Query String Parameters 參數的關係,發現

url 中的 w 表明歌手名,p 表明頁數。

111aae9872aa426287090ee1923ea3ae


c3f0ab8c3b454c9d9e1d88a61e798ee3


8.經過 json 代碼實現,首先小試牛刀,爬取第一頁

的數據,url 直接複製過來。成功!

ecbfd057cb2b4b3395d271b69b520346


708a3e7bb36f4c40925c6d5b149a46fb


9.引入 params 參數,實現指定歌手、指定頁數的查詢。

注意代碼url爲上一步url中「?」以前的部分, params兩邊的參數都須要加 ’’,requests.get 添加 params,參數(也可順便添加 headers 參數)

fc188791633044cab4905aa81cf11d91


10. 添加存儲功能,保存到本地(Excel)。也可保存爲 csv 格式或存入數據庫,操做相似。

99f9bc5dc85946328e9c6bd773652da1


3db030f9142f4518874ba4ef13a23812


9245c84e00c1424c9374d4f26fb5fc8e



【4、總結】

1.爬取 QQ 音樂比爬取豆瓣等網站稍難,所需信息不在網頁源代碼,需查看 XHR;

2.經過 XHR 爬取數據通常要使用 json,格式爲:

res = requests.get(url)
json = res.json()
list = json[‘’][‘’]…

3.僅供練手參考,不建議爬取太多數據,給服務器增大負載;

4.Python 爬取 QQ 音樂數據(二)將爲你們帶來如何爬取指定歌曲的歌詞及評論(selenium),並生成詞雲圖(wordcloud),敬請期待。

5.須要本文源碼的話,請在公衆號【IT共享之家】後臺回覆「QQ音樂」四個字進行獲取。

看完本文有收穫?請轉發分享給更多的人

想學習更多Python網絡爬蟲與數據挖掘知識,可前往專業網站:http://pdcfighting.com/

相關文章
相關標籤/搜索