十行代码帮助小姐姐给偶像送上最真挚的礼物----爬虫词云齐上阵,熬夜精心制作

网友投稿 244 2022-09-06


十行代码帮助小姐姐给偶像送上最真挚的礼物----爬虫词云齐上阵,熬夜精心制作

十行代码帮助小姐姐给偶像送上最真挚的礼物----爬虫词云齐上阵,熬夜精心制作

这是本文思路,谢谢观看

​​十行代码帮助小姐姐给偶像送上最真挚的礼物----爬虫词云齐上阵,熬夜精心制作​​

​​故事背景​​​​制作过程​​

​​1.爬虫的帮助​​​​2.词云的帮助​​

​​成果展示​​

首先,最近河南暴雨严重,希望河南的小伙伴们保护好自己,也希望大家少一点关注娱乐圈毫无意义的瓜,多去关注一下河南的暴雨救援情况,贡献出自己的力所能及的帮助。加油,We are always by your side!!!

故事背景

最近嘛,有位朋友找我帮忙嘛,希望我帮她做一份礼物,送给一直鼓舞着她不断向前,不断努力奋斗的偶像…,好家伙,我直接感动了,优质偶像的作用竟是如此之大!(一定要追有意义的优质明星,当一个理智的粉丝,而不是一群(nao can)粉)

制作过程

首先,我觉得作为一名优秀的歌手,歌曲的质量是放在第一位的,无关颜值无关综艺感,更无关演技,当然还是要以人品为首位!所以我打算从歌曲评论为出发点去制作这个礼物!

1.爬虫的帮助

这是最终的代码:利用 requests 进行网页请求;利用json 进行格式转换

我把爬取来的评论放到了一个名为:变废为宝.txt的txt文本文档中

import requests import json def get_hot_comments(res): comments_json = json.loads(res.text) hot_comments = comments_json['hotComments'] with open('变废为宝.txt', 'w', encoding='utf-8') as file: for each in hot_comments: file.write(each['user']['nickname'] + ':\n\n') file.write(each['content'] + '\n') file.write("---------------\n")def get_comments(url): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400', 'referer': ' } params = "Brz3HT85JisY8LDEnLmxi / xmif2K6blJa6S98 / yJLqJC57FXl3 / X2 / N4o7f + rI6X + XrTVC7x8LcajFJFdaJGEYAzGbBN6WQLsJSqWbi5PYjJ0DHpXPSqZk0o / +GOJigre4SPFZy1sAQvV + BNovPMpsaKevgNxMftnwzEictv6k2arH0y5XLZZ0y8P3FNYYgZ + s70qhLJHf8B5bfjf23uSiFaclQFGpM / Sn202q / iHgxXSq4f7y1NkFXlXXMfNn8io09KCa1yynKed9W1ptPI5q4Jj + 5\ FQQgDYyXKHAvl1SisUm3Pj8rtl + VIGJFvyIVE" encSecKey = "d180e107a8c7d417d1a27bc23f2321b97d1744df31c17415843a41015fbec1ae3b681d45fc3d98974f05e1b552d5a5b54c750637f68d0b36e74596211e8db6d9d9969b52589a57c48c98a1c87dfaf3f93a228be636def04e36fd8ea2fe4c345b0951a9fe5fc8043937b753bbe5339a7d7180b0813b31af734668ab6f08eaa8c5" data = { "params ": params, "encSecKey": encSecKey } name_id = url.split('=')[1] target_url = " res = requests.post(target_url, headers=headers, data=data) # 传入它的关键字参数 return resdef main(): url = input("请输入链接地址:") res = get_comments(url) # 返回给相关获取的网页资源 get_hot_comments(res)if __name__ == "__main__": main()

2.词云的帮助

如何快速的看出一首歌的影响力,主要在于看这首歌的评论趋向,到底是称赞多呢还是拉跨多呢,又或者评论趋向于那几点呢?这个时候词云的作用是十分巨大的,他可以把关键词集中在一起,并且出现关键词的次数越多的话,在词云中的显现会更加明显。

话不多说,我们直接开搞:

# -*-coding:utf-8 -*-# @Author:到点了,心疼徐哥哥# 奥利给干!!!import wordcloud #导入词云库import numpy as npimport matplotlib.pyplot as pltimport PILimport jiebaimport rewith open(r'变废为宝.txt',encoding='utf8') as fp: text1 = fp.readlines()#打开我们之前爬虫爬下来的txt文件image1 = PIL.Image.open(r'a.jpg')#导入图片,作为词云的形状,不是背景图,只影响词云的形状MASK = np.array(image1)#把图片转化为数组格式,需要用img=np.array(img)做转换,才能看到shape属性,是(height,width,channel)数组,channel的通道顺序为RGB。WC = wordcloud.WordCloud(font_path = 'simkai.ttf',max_words=200, max_font_size=200,mask = MASK,height= 4000,width=4000, background_color='white',repeat=False,mode='RGB',random_state = 42)st1 = re.sub('[,。、“”‘ ’]','',str(text1)) #使用正则表达式将符号替换掉。#re.sub共有五个参数。其中三个必选参数:pattern, repl, string两个可选参数:count, flags# 第一个参数:pattern,表示正则中的模式字符串,这个没太多要解释的。#第二个参数:repl,就是replacement,被替换,的字符串的意思。# 第三个参数:string,即表示要被处理,要被替换的那个string字符串。conten = ' '.join(jieba.lcut(st1))con = WC.generate(conten)plt.imshow(con)plt.axis('off')#隐藏坐标轴plt.show() #显示图片path = r'C:\Users\xuyip\PycharmProjects\pythonProject33\pyecharts'con.to_file(path+r'\beautifulcloud.png')#保存图片

这里我们主要使用了wordcloud这个词云库,我们详细的说一下词云的各种可修改的格式和风格

WC = wordcloud.WordCloud(font_path = 'simkai.ttf',max_words=200, max_font_size=200,mask = MASK,height= 4000,width=4000, background_color='white',repeat=False,mode='RGB',random_state = 42)

width:画布宽度(默认为400像素)

height:画布高度(默认为200)

margin:每个单词间的间隔 (默认为2)

prefer_horizontal :词语水平方向排版出现的频率(默认为0.9,注意水平排版和垂直排版概率之和为1,因此默认垂直方向排版为0.1)

mask:nd-array or None (default=None), 简单理解为绘制模板。当mask不为0时,那么之前依据height和width设置的画布则作废,此时“画布”形状大小由mask决定。

scale:float (default=1). 计算和绘图之间的比例(就是放大画布的尺寸,也可以叫比例尺)

max_words:number (default=200) 最大显示单词字数。

max_font_size:int or None (default=None) 最大单词的字体大小,如果没有设置的话,直接使用画布的大小。

stopwords:set of strings or None 被淘汰不用于显示的词语,默认使用内置的stopwords。

background_color:color value (default=”black”) 词云图像的背景色,默认为黑色。

mode:string (default=”RGB”) 当mode=“RGBA”且background_color=“None”时,将生成透明的背景。

relative_scaling:float (default=’auto’) 词频大小对字体大小的影响度。如果设置为1的话,如果一个单词出现两次那么其字体大小为原来 的两倍。

random_state:设置有多少种随机生成状态,即有多少种配色方案

这里我们将背景色设为了白色:background_color=‘white’(也有别的颜色,可以随意设置) 最大单词数我们设置为max_words=200,最多配色数设置为random_state = 42,最大单词字体型号设置为:max_font_size=200

然后大功告成!

成果展示

让我们来看看最终成果吧:

这便是一个简单的词云了,从中我们可以看出大家对这首歌评论的关键词,因为我们的背景图片只是一个圆,这样多少有点low,能不能换成别的呢,答案是:能!

我们找到薛之谦的一张图片,已之为背景图,但这张图片必须只有人物,也就是把背景去掉,把人物抠出来(需要一丢丢的抠图技术,不要说不会哟,我默认你会ps),词云才会以人物身体来作为背景

DuangDuangDuang:

啥也不说,先鼓三分钟掌,然后我又为小姐姐陆陆续续做了十张左右,小姐姐直接感激的痛哭流涕!其实这是我花了一个晚上熬夜制作的,不过没事,帮助他人是一件非常快乐的事,希望大家也为他人伸出援助之手,我们一起加油!

哈哈哈,这就是今天要给大家分享的全部内容了

如果你喜欢的话,就不要吝惜你的一键三连了~


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot server.port配置原理详解
下一篇:配置清华源--让你的pip安装模块飞起来(ubuntu 清华源)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~