Python爬蟲如何去抓取qq音樂的歌手資料?

千鋒武漢發表於2021-03-19

自從學會爬蟲之後是不是有一種我什麼都想爬一下的衝動?今天小千就來教大家如何去抓取qq音樂的歌手資料,專案實操多練習能更快提升自己哦。

今天的專案目標就是獲取 QQ 音樂指定歌手單曲排行指定頁數的歌曲的歌名、專輯名、播放連結,由淺入深,層層遞進,非常適合剛入門的同學練手。主要涉及的庫有:requests、json、openpyxl。

專案步驟

1.瞭解 QQ 音樂網站的 robots 協議(安全)

只禁止播放列表,可以操作

2.進入 QQ 音樂主頁

3.輸入任意歌手,比如張傑

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

5.分析網頁原始碼 Elements,發現無歌曲資訊,無法使用 BeautifulSoup,如下圖所示,結果為空。

6.點選 Network,看資料在不在 XHR(無重新整理更新頁面),我的經驗是先看 Size 最大的,然後分析 Name,檢視 Preview,果然在裡面!

將response格式化後顯示內容如上

7.點選 Headers,拿到相關引數。如下圖,仔細觀察url 與 Query String Parameters 引數的關係,發現url 中的 w 代表歌手名,p 代表頁數

其中:p=1&n=10&w=%E5%BC%A0%E6%9D%B0

8.透過 json 程式碼實現,首先小試牛刀,爬取第一頁的資料,url 直接複製過來。成功!

其中:分析json獲取歌曲列表,獲取播放連結

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

注意程式碼url為上一步url中“?”之前的部分, params兩邊的引數都需要加 ’’,requests.get 新增 params,引數(也可順便新增 headers 引數)

10.新增儲存功能,儲存到本地(Excel)。也可儲存為 csv 格式或存入資料庫,操作類似。

總結

爬取qq音樂比爬取豆瓣等網站稍難,所需資訊不在原始碼中,需檢視xhr。

透過xhr爬取資料一般要使用json,格式為:

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

僅供練手參考,不建議爬取太多資料,給伺服器增大負荷。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2763750/,如需轉載,請註明出處,否則將追究法律責任。

相關文章