教你爬取抖音甜曲《好喜歡你》,感覺荷爾蒙的氣息

最近發現一首很火的歌,瞬間讓你感覺到濃濃的青春懵懂感,這就是王廣允的《好喜歡你》。說實話,爬這種愛意濃濃的歌曲彷佛不是咱們這種單身XX應有的想法,可是仍是想體會一下那些青春歲月裏的小幸福,話很少說,代碼走起來。html

 

原本想這裏直接貼上歌曲的連接,可是因爲版權問題,你們能夠去網易雲自行聽取哈。算法

 

咱們此次爬取的信息主要是評論點贊前十的數據,並據此進行數據可視化操做,生成詞雲。json

 

1、請求分析api

咱們首先打開網易雲音樂的官網,進入《好喜歡你》的播放頁面,而後按F12或者審查元素獲取控制檯信息。瀏覽器

url.png

 

咱們這裏經過瀏覽器中的歌曲的id來獲取評論的連接,這是一個很是快捷的方式,我以前嘗試過不少的方法,感受都太麻煩了,這個方式簡單,你們之後爬取均可以按照這種方式進行。服務器

接着就是肯定是經過get仍是post的方式來提交數據的,咱們發現Headers裏面顯示是Post方式:cookie

post.png

 

涉及到表單的提交,通常都會附帶敏感信息,例如cookie,因此這裏咱們就須要檢查一下有沒有參數遺漏了:app

請求參數.png

咱們在Headers底下發現有一個Rorm Data裏面包含兩個參數params和encSecKey,待會咱們提交的時候須要帶上這兩個參數。若是你爬過相似的網站,你就會猜想這個可能就是標識歌曲信息和我的信息的一個加密數據,實際上這個就是那樣的。本篇並不打算去介紹如何去破解這個加密算法,我打算可能下一篇來介紹一下這個破解過程。echarts

  通常爬取的時候,咱們首先會預覽一下數據信息,就控制檯下面的preview,發現服務器返回的數據格式是json,因此咱們等下就須要把數據轉換成json格式:post

預覽.png

  看到沒有,這些數據是很是具備規律的,而後就能夠開始書寫代碼了。

  一般咱們須要在headers裏面添加一些host,referer,user-agent等,這是防止被網站識別出爬蟲而被限制訪問。

2、代碼書寫

 

1import requests
 2import json
 3
 4 # 獲取歌曲評論的url
 5url = 'https://music.163.com/weapi/v1/resource/comments/R_SO_4_1320098098?csrf_token=cfb7c24b770cd1cad7f7bf6c9bcb6f29' 
 6
 7 # 由於是post提交,採用MD5或者其餘算法加密過,可是咱們能夠直接使用加密後的數據,用於瀏覽器識別身份
 8headers = {
 9'Host': 'music.163.com',
10'Origin': 'https://music.163.com',
11'Referer': 'https://music.163.com/song?id=1320098098',
12'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'
13              ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
14}
15
16User_Data = {
17    'params': 'ilXGpo53YAlLd7+0UutKIXmODpUQWhXl1lvPU2a7Y8vOIsFvIr/Q5QYpaSvXRgMU47q5Aa9gJkmY5KM2jS+l5gaIAzf/OmVy6ud71TFl'
18              'fyELQADIGNGSbW8PNXvNyWvPMjEImTtIxrvoOgFlLF429Tbpd/XAAnh6aQu23+hKxThzLBZhO0jdOLLgNAvm87McNgiaVfCQ+1eYws4kn5i+8jR/P/UPt9wdIM8G8qx1xmw=',
19    'encSecKey': '79c3d0f6664de1758c3ae2c3c7c9dabbb61c2a46b79fa0a8d40a842361c6ddd94d2e21594219bf98b9e4ff124fa3f5046b'
20                 '1dfa60f38c35fc5511f1be314ed0bcac69a7867f2870ba01b8af7ee0900a588759b5aad499565aa45e379589a42ba150fa5e'
21                 'df4afb0442f063ab212d9eb9376b4ca99f282d9520653fd808176a5e0f'
22}  
23
24 # 經過post方式來提交數據
25response = requests.post(url, headers=headers, data= User_Data) 
26
27# 轉換成json格式便於後面數據的提取
28data = json.loads(response.text)  
29hotcomments = []
30for hotcomment in data['hotComments']:
31    item ={
32        'nickname': hotcomment['user']['nickname'],
33        'content': hotcomment['content'],
34        'likedCount': hotcomment['likedCount']
35    }
36    hotcomments.append(item)
37
38 # 獲取評論的用戶名稱,內容,以及對應的點贊數
39nickname_list = [content['nickname']for content in hotcomments]  
40content_list = [content['content']for content in hotcomments]
41likedCount_list = [content['likedCount']for content in hotcomments]

 

3、數據可視化

這裏我使用了pyecharts這個開源庫,它是百度Echarts對Python的實現,挺好用的。使用它須要安裝一些依賴包,關於pyecharts的安裝我就不介紹了,直接貼上實現數據圖表的代碼:

1from pyecharts import Bar
2# 圖表展現
3bar = Bar('評論中點贊數顯示圖')
4bar.add('點贊數',nickname_list,likedCount_list, is_stack=True, mark_line=['min', 'max'], mark_point=['average'] )
5bar.render()

代碼是否是不多,它會在當前的目錄下面生成一個render.html文件,你用瀏覽器打開就是這樣:

點贊數.png

接下來即是生成詞雲了,這裏也是貼上實現詞雲的代碼:

1from wordcloud import WordCloud
2import matplotlib.pyplot as plt
3# 詞雲展現
4content_text = " ".join(content_list)
5wordcloud = WordCloud(font_path=r"F:\字體\21\YGY20070701.ttf",max_words=200).generate(content_text)
6plt.figure()
7plt.imshow(wordcloud,interpolation='bilinear')
8plt.axis('off')
9plt.show()

代碼也是比較少的,系統會生成一個圖片。若是你使用pycharm這個IDE,你就會看到這樣相似的圖片:

ciyun.png

最後我把點贊前十的評論都給貼出來,你們好好感覺一下:

 

一、陰天雨天晴天,都不如你和我聊天。

 

二、我高中同窗,上課坐在後面喜歡聽歌  喜歡戴墨鏡在學校裏穿梭  喜歡耍酷  走到哪都是一道風景!學校每次演出 他都會參與 每次出場都會響起一陣女生崇拜的尖叫聲。畢業後常常會在綜藝選秀節目看到他的身影  當時會以爲他可能會成爲一個大明星。時至今日 他如今的成就 和他的努力成正比 。

 

三、有本事你就照顧好本身,否則就老老實實地讓我來照顧你一生。

 

 四、不是在撩你,是真的想和你在一塊兒。 也不是一點點喜歡你,是好喜歡好喜歡你。

 

五、我會在每一分鐘的60秒每個小時的60分鐘每一天的24小時每個星期的7天每個月的31天每年的365天想你,可是表白找不到人怎麼辦? 啊哈。

 

六、我試過一我的回家,我也試過一我的吃飯,一我的低頭學習,一我的拿行李箱。能夠親愛的,由於你我認識了更多志同道合又惺惺相惜的人啊,你是我口袋裏的男友,我多想有一天,本身很努力很優秀,只要靜靜的看着在臺上閃閃發光的你就行了,一路披荊斬棘,也謝謝你這麼優秀[愛心],此次換咱們來保護你了。

 

七、今天是分手的第23天,我得心情不是很美妙。我選擇忘記,從新開始,你昨晚缺還來找我!大膽!擾亂個人心神! 雖然我是個賣jia表的,可是你不能瞧不起我啊!。

 

八、陰天雨天晴天,都不如我這裏的PT鞋。

 

九、我是同性戀,我超喜歡個人同桌。雖然你們都不承認,可我始終相信咱們必定能夠在一塊兒的。鄭浩!我愛你!

 

十、我還喜歡你,並不僅是說說而已。但願你之後不要再遇到我這樣的人,敏感 總愛瞎想 膽小怕事 懦弱 又不能讓你快樂 也不能讓你喜歡我 你很累吧 可是又但願你遇到像我這樣的人 由於這樣的人真的真的好喜歡你啊[哀傷]。

 

看到這裏,我想說大家儘管秀,能傷害到我,就算我輸,畢竟單身多年也是憑實力的。。。。。

相關文章
相關標籤/搜索