1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 抓取网易云音乐歌曲热门评论生成词云

抓取网易云音乐歌曲热门评论生成词云

时间:2018-08-24 01:55:10

相关推荐

抓取网易云音乐歌曲热门评论生成词云

如何解析网页就不介绍了,可以参考:

/Monkey_D_Newdun/article/details/79318629

直接上代码~

刚刚突然听到一首老歌,SHE的《听袁惟仁弹吉他》,就爬这首的评论吧~这首歌的ID是375095

1. 抓取热门评论内容

import requestsimport jsondef getcomments(musicid):url = '/weapi/v1/resource/comments/R_SO_4_{}?csrf_token='.format(musicid) #{}内为自定义函数getcomments(musicid)的参数,由用户输入的payload = {'params': 'wh0V9MEwF+aU+XzfrIzcIoovOzMVYAvnNssWEvw2P3C3euuqtzZfo8OJYlZoZ/kE0aAgMBQtvPY2J2MoGVYnIG6FpuAekLc4u4YgjbvPh8GjHqDB7KmIsf0Q87LoSDmq3gXHCEwMPot2CtJae9Uc9d5mDofHna0sKtUH1Z6Cwhp1lynlsm230WNBLdV9TlDn','encSecKey': '0d215e8c12f2ed2f5d298f0f45aa6f7d59300a655402ded380fd4f1200b34be31cef810ec42639d2f9b33f2a8ffd061873d3faf6d14b1dfd111b0714e175d6f829b7657936adbae8b6c8d46bede24e2266949cfac10f234b1614ec980cf05a22be477d1ce56e87578ec09a47e4cf5f9e23184c354e46afbd49175a9f449d'}headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1 Safari/605.1.15','Referer': '/song?id={}'.format(musicid),'Host': '','Origin': ''}response = requests.post(url=url, headers=headers, data=payload)data = json.loads(response.text)hotcomments = []for hotcomment in data['hotComments']:item = {'nickname': hotcomment['user']['nickname'], #昵称'content': hotcomment['content'] #评论} #item是一个字典hotcomments.append(item) #hotcomments是一个list# 返回热门评论return [content['content'] for content in hotcomments] #拆分成两步:for content in 列表hotcomments #第一步:列表的元素是字典,取出其中的一个字典content对应的内容,也就是content['content'] #第二步:将这个字典content加上[]变成列表if __name__ == '__main__':hot = getcomments(375095)print(hot) #hot是一个list

note: 列表中存储字典的用法可以参考: /AaronFan/p/6057264.html

2. 热门评论保存到本地txt

file=open('/Users/ycy/Desktop/hotcomment_contents.txt','w') file.write(str(hot)) #write() argument must be str, not listfile.close()

3. 读取txt内容并结巴分词

text = open(r'/Users/ycy/Desktop/hotcomment_contents.txt',"r").read()import matplotlib.pyplot as plt#数学绘图库import jieba#分词库from wordcloud import WordCloud #词云库#默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒cut_text= jieba.cut(text)result= "/".join(cut_text)#必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云print(result)

4. 生成词云图

wc_1 = WordCloud(font_path=r"System/Library/Fonts/STHeiti Medium.ttc",max_font_size=50)#,min_font_size=10)#,mode='RGBA',colormap='pink')wc_1.generate(result)wc_1.to_file(r"/Users/ycy/Desktop/hotcomment_contents.png")from matplotlib.font_manager import FontPropertiesfont = FontProperties(fname="/Library/Fonts/Songti.ttc")plt.title(u"词云图", fontproperties=font) #指定所绘图名称#plt.title(u"按年龄看获救分布 (1为获救)", fontproperties=font)plt.imshow(wc_1) # 以图片的形式显示词云plt.axis("off")#关闭图像坐标系plt.show()

最后得到的词云图如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。