文中涉及的一些python3模块需要安装:
from pyecharts import Barfrom wordcloud import WordCloudimport matplotlib.pyplot as plt
sudo pip3 install pyecharts
sudo apt-get install python3-dev
sudo pip3 install wordcloud
sudo pip3 install matplotlib
sudo apt-get install python3-tk
字体下载(simhei.ttf)
/font_download.php?id=151&part=1237887120
经过验证发现,headers只需User-Agent即可
# -*- coding:utf-8 -*-import requestsimport jsonfrom pyecharts import Barfrom wordcloud import WordCloudimport matplotlib.pyplot as plt#27955653 为《你还要我怎样》url = '/weapi/v1/resource/comments/R_SO_4_27955653?csrf_token='headers = {'User-Agent':'Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1',#'Referer':'/song?id=551816010',#'Origin':'',#'Host':''}#加密数据,直接拿过来用user_data = {'params': 'vRlMDmFsdQgApSPW3Fuh93jGTi/ZN2hZ2MhdqMB503TZaIWYWujKWM4hAJnKoPdV7vMXi5GZX6iOa1aljfQwxnKsNT+5/uJKuxosmdhdBQxvX/uwXSOVdT+0RFcnSPtv','encSecKey': '46fddcef9ca665289ff5a8888aa2d3b0490e94ccffe48332eca2d2a775ee932624afea7e95f321d8565fd9101a8fbc5a9cadbe07daa61a27d18e4eb214ff83ad301255722b154f3c1dd1364570c60e3f003e15515de7c6ede0ca6ca255e8e39788c2f72877f64bc68d29fac51d33103c181cad6b0a297fe13cd55aa67333e3e5'}response = requests.post(url,headers=headers,data=user_data)data = json.loads(response.text)hotcomments = []for hotcommment in data['hotComments']:item = {'nickname':hotcommment['user']['nickname'],'content':hotcommment['content'],'likedCount':hotcommment['likedCount']}hotcomments.append(item)print(item['nickname'],item['content'],item['likedCount'])#获取评论用户名,内容,以及对应的获赞数content_list = [content['content'] for content in hotcomments]nickname = [content['nickname'] for content in hotcomments]liked_count = [content['likedCount'] for content in hotcomments]bar = Bar("热评中点赞数示例图")bar.add( "点赞数",nickname, liked_count, is_stack=True,mark_line=["min", "max"],mark_point=["average"])bar.render()content_text = " ".join(content_list)wordcloud = WordCloud(font_path=r"/home/tester/learn/spider/music_wangyiyun/simhei.ttf",max_words=200).generate(content_text)plt.figure()plt.imshow(wordcloud,interpolation='bilinear')plt.axis('off')plt.show()