【一、項目目标】
擷取 QQ 音樂指定歌手單曲排行指定頁數的歌曲的歌名、專輯名、播放連結。
由淺入深,層層遞進,非常适合剛入門的同學練手。
【二、需要的庫】
主要涉及的庫有:requests、json、openpyxl
【三、項目實作】
1.了解 QQ 音樂網站的 robots 協定
隻禁止播放清單,可以操作。
2.進入 QQ 音樂首頁
https://y.qq.com/3.輸入任意歌手,比如鄧紫棋
4.打開審查元素(快捷鍵 Ctrl+Shift+I)
5.分析網頁源代碼 Elements,發現無歌曲資訊,無法使用 BeautifulSoup,如下圖所示,結果為空。
6.點選 Network,看資料在不在 XHR(無重新整理更新頁
面),我的經驗是先看 Size 最大的,然後分析 Name,
檢視 Preview,果然在裡面!
7.點選 Headers,拿到相關參數。如下圖,仔細觀察
url 與 Query String Parameters 參數的關系,發現
url 中的 w 代表歌手名,p 代表頁數。
8.通過 json 代碼實作,首先小試牛刀,爬取第一頁
的資料,url 直接複制過來。成功!
9.引入 params 參數,實作指定歌手、指定頁數的查詢。
注意代碼url為上一步url中“?”之前的部分, params兩邊的參數都需要加 ’’,requests.get 添加 params,參數(也可順便添加 headers 參數)
- 添加存儲功能,儲存到本地(Excel)。也可儲存為 csv 格式或存入資料庫,操作類似。
【四、總結】
1.爬取 QQ 音樂比爬取豆瓣等網站稍難,所需資訊不在網頁源代碼,需檢視 XHR;
2.通過 XHR 爬取資料一般要使用 json,格式為:
res = requests.get(url)
json = res.json()
list = json‘’…
3.僅供練手參考,不建議爬取太多資料,給伺服器增大負載;
4.Python 爬取 QQ 音樂資料(二)将為大家帶來如何爬取指定歌曲的歌詞及評論(selenium),并生成詞雲圖(wordcloud),敬請期待。
5.需要本文源碼的話,請在公衆号背景回複“QQ音樂”四個字進行擷取。