最近又到了一年一度的年末總結了,網易雲音樂如此退出了年度歌單,又一次被刷朋友圈了。做爲程序員,就好奇的想驗證下結論準不許,隨便回顧下爬蟲的操做。
首先,打開網頁版網易雲音樂,登陸成功後,進入本身或好友的聽歌排行榜,如圖:
直接使用瀏覽器的開發工具,刷新頁面查看接口及其返回結果,找到刷新該列表的接口,如圖:
找到url後,再找到對應的cookie等值,複製保存。如圖:
至此,咱們已經找到網頁全部想要的信息了,下面咱們就能夠直接用代碼實現了。
思路:
```
a.先爬取歌曲列表,獲取對應歌曲的信息,存放到數據庫,以便後面使用
b.經過歌曲的id,獲取對應的歌詞;
c.讀取歌詞分析獲取關鍵詞
d.選擇自定義的背景圖生成本身的詞圖程序員
1.須要用到的模塊 import requests import re import pymssql import matplotlib.pyplot as plt # 數學繪圖庫 from PIL import Image import numpy as np # 科學數值計算包,可用來存儲和處理大型矩陣 import jieba # 分詞庫 from wordcloud import WordCloud, ImageColorGenerator # 詞雲庫 from selenium import webdriver import time
2.自定義三個函數
a)get_info():獲取歷史列表中的全部歌曲並將其寫入數據庫中,同時返回全部歌曲的id,以便後面獲取歌詞
代碼塊以下:web
b)get_lyric():獲取全部歌曲的歌詞
吐槽一句,以前直接用'http://music.163.com/api/song/media?id={id}'.format(id=id), 就能夠經過這個api直接獲取對應id歌曲的歌詞,如今被封了,只能用UI來分別爬取了,效率極低(考慮用多線程處理)
c)get_wordcloud():生成對應的詞雲圖
定義好歌詞存放的位置、選擇詞圖的背景圖及最後生成詞圖的位置,依次調用上面三個函數便可。效果圖以下:
4.關注公衆號,回覆’網易雲’三個字便可獲取完整代碼,還可獲取專屬我的最愛音樂詞圖定製全過程代碼sql