入我豪门真的不亏~内附词云图相关分析

从创造营开始,就入了豪门,一直想考古电竞男主脸--任豪的微博,这几天空闲来翻了翻从2015年10月24日他开通微博到2020年4月6日的582条原创微博,发现入豪不亏!~

首先要爬取数据,一般web都有反爬虫机制,而且反爬虫策略一直在更新,冒着被封号的危险,踩了无数的坑,看了周鸟大佬(感谢微博id:@爱编程的周鸟)的视频后,有了以下思路:
微博目前有3个版本,分别是手机端(https://m.weibo.cn/)、移动端(https://weibo.cn/)和网页端(https://weibo.com/),因为网页端很难操作,一般选择移动端或者手机端。本文选用移动端,界面越“丑”但越好用。
根据周鸟大佬的视频,大家可以轻松得到喜欢的博主的所有微博(包括原创、转发、图片、视频等),根据自己的需要设置起始时段,当一切配置好后,下次直接更改博主id和cookie(有时候会过期失效)即可。
下面贴出视频链接:
[https://m.weibo.cn/u/3184193244?uid=3184193244&luicode=10000011&lfid=100103type%3D1%26q%3D%E5%91%A8%E9%B8%9F](https://m.weibo.cn/u/3184193244?uid=3184193244&luicode=10000011&lfid=100103type%3D1%26q%3D%E5%91%A8%E9%B8%9F]

在此贴出几个注意点:
①如果本身安装了Python,这个mini版本就不需要安装了,而且要注意不同版本的冲突,如果要卸载最好先在cmd里面看自己需要什么版本再用uninstall.exe卸载
②如果因为空间限制,Python安装在d盘或者其他盘,就要体现设置好环境变量,并且在cmd里面要转换路径(cd /d d:/具体路径)
③如果怕大号被封,最好用小号的cookie
④如果which Python无结果,可以输where is Python试试

部分数据截图如下:


对提取到的微博数据,采用jieba分词模块对微博正文进行处理,首先将微博中的数字、字母、特殊符号等使用正则表达式去掉,然后使用jieba分词模块对微博正文进行分词。
首先画一个词云图,看看豪大爷最喜欢用哪些词,具体代码如下所示:

import requests
import json
import re
import csv
from time import sleep
from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator  #词云库
import matplotlib.pyplot as plt #数学绘图库
import numpy as np
import jieba  #分词库
import matplotlib.font_manager as fm #需要对中文进行处理
from os import path  #用来获取文档的路径


#读入txt文本数据
ywj=open(r'f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\ywj.txt',"r").read().split('\n')
background_image = np.array(Image.open(r'f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\yt.jpg'))

Rs1=[] #建立存储分词的列表
for i in range(len(ywj)):
    result=[]
    seg_list = jieba.cut(ywj[i])
    for w in seg_list :#读取每一行分词
        result.append(w)
    Rs1.append(result)#将该行分词写入列表形式的总分词列表

#写入CSV,此时仅分词
file1=open('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\fc.csv','w')
writer = csv.writer(file1)#定义写入格式
writer.writerows(Rs1)#按行写入
file1.close()

得到分词后的结果:


#打开停用词表
ywj_stop={}.fromkeys([line.rstrip() for line in open(r'f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\stopwords.txt',"r")])
#原txt文件
ywj=open(r'f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\ywj.txt',"r").read().split('\n')
Rs2=[] #建立存储分词的列表
for i in range(len(ywj)-1):
    result=[]
    seg_list = jieba.cut(ywj[i])
    for w in seg_list :#读取每一行分词
        if w not in ywj_stop and w != ' ':
            result.append(w)
    Rs2.append(result)#将该行分词写入列表形式的总分词列表
#写入CSV,此时是删除停用词之后的结果
file2=open('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\stop_cutword.csv','w')
writer = csv.writer(file2)#定义写入格式
writer.writerows(Rs2)#按行写入
file2.close()

得到删除停用词后的结果:


使用的背景图如下:


#此时将stop_cutword.csv转换为txt文件
stop_cutword=open(r'f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\stop_cutword.txt',"r").read().split('\n')
# Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
stop_cutword_text = "/".join(stop_cutword)

wc = WordCloud(
    scale=4,
    font_path="f:\\Anaconda\\Lib\\site-packages\\wordcloud\\Fonts\\MSYH.TTF",
    background_color="white",
    max_words=200,
    max_font_size=60,
    random_state=42,
    mask=background_image).generate(stop_cutword_text)
#为图片设置字体    
my_font=fm.FontProperties(fname='f:\\Anaconda\\Lib\\site-packages\\wordcloud\\Fonts\\MSYH.TTF')
#产生背景图片,基于彩色图像的颜色生成器    
image_colors = ImageColorGenerator(background_image)
#开始画图
plt.imshow(wc.recolor(color_func=image_colors))
plt.imshow(wc)
#为云图去掉坐标轴
plt.axis('off')
#画云图,显示
plt.show
#保存云图
wc.to_file(r"f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\hz.png")

得到词云图:


从词云图可以看出我们豪总是一个认真努力积极向上的当代好青年_

“希望、努力、美好、梦想”,是你啊,是始终的追光者。
生活有望穿秋水的等待也会有意想不到的惊喜。
无需畏惧黑暗,但你要成为光。

“RISE、ZERO、POI”,是矢志不渝的坚持啊
你收集了世间星光,带着温柔和真诚来遇见我们。
谢谢你经历过的一切造就了现在的任豪,接下来请一路走花路吧

“现在、准备、马上、今晚、明天”是忙碌的豪总啊
一直在路上,因为无尽的热情和喜爱持续输出。
希望你能永远明朗坦荡钟情豁达,有得有失有坚持,能笑能哭能尽欢。

”第一次、成团、作品、录制、创造、拍照、MV、舞台“是处处有惊喜的人生啊
星星醉酒到处跑,月亮跌进深海里,我以前从未觉得人间美好,直到你来了。
你的种种第一次,带给我们的是处处惊喜。

”北京、上海、妈妈、回家“是牵挂家人的任菲特啊
就像你说的,”我出生在一个与生俱来就铭刻着我的成都
我把我轻狂的热血留在了杭州
我走着人生最大转折点选择在上海
而我将最美好的时光寄托给了你们“
希望POI.任豪可以走出国门看世界,果仁们一路相伴!

”哈哈哈、纠结、开心、幸福“是充满小确辛的生活啊
有钱会炒股、杀鱼做饭熟练、照顾别人情绪、话不多但精辟,一枚细心boy!
笑容就像冬日的暖阳,治愈人心,愿你的笑容常在!

”一起、谢谢、粉丝、宝宝、十二、谢谢你们”是始终对粉丝温柔回应的人好啊
看完b站的录播,不知道那天晚上被wjjw批成什么样,和粉丝之间的真心话
与粉丝双向的爱,易于常人成熟的心智
被队员都形容“稳、老大哥、豪总"的他,始终向众人展示他的好与温柔

好吧,自己敲完的字感触颇多,感觉自己很幸运,喜欢上一个内心柔软的男孩!

再看看豪总一般什么时候比较活跃哈
时间在excel中是字符形式的,需要把其转换为datetime格式,然后忽略分钟对小时进行概率统计,具体代码如下:

# 对豪总发微博的时间进行统计
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import seaborn as sns
from datetime import datetime
import pylab as pl
# 设置背景
sns.set_style('darkgrid')
# 设置字体,防止中文乱码
zhfont1 =fm.FontProperties(fname='F:\\Worktools\Fonts\MSYH.TTF')
# 此时要将日期去掉
works=pd.read_excel('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\time.xls')
works['时间']=works['时间']
Time=[]
for i in range(0,len(works)):
    Time.append(datetime.strptime(works['时间'][i].strftime("%H:%M:%S"), '%H:%M:%S'))
    
emmm=[]
for i in range(0,len(Time)):
    emmm.append(Time[i].hour)
print(emmm)
plo=sns.distplot(emmm,label = '豪总发微博的时间',bins = np.arange(25),kde=False,color='#ff8000')

# 添加横纵坐标
plt.xlabel('time')
plt.ylabel('numbers')
# 设置x轴刻度
plo.set_xticks(np.arange(0,24,1))
# tight:坐标轴数据显示更明细
plt.axis('tight')
# x轴标签旋转角度
pl.xticks(rotation=30)
pl.xticks(rotation=30)
# 显示图例
plt.legend(prop=zhfont1)

# 添加数据标签
# z, y+0.05表示在每一柱子对应x值、y值上方0.05处标注
# '%.0f'中0表示不显示小数后面的数值,1就表示显示小数后面一位,以此类推 
# ha='center', va= 'bottom'代表horizontalalignment(水平对齐)、verticalalignment(垂直对齐)

for p in plo.containers[0].patches:
        height = p.get_height()
        x, y = p.get_x() + p.get_width()/2 - 0.3, 1.02 * height
        plt.text(x, y+0.5, '{:,.0f}'.format(height),va= 'bottom')
        
# 添加折线图,此时先得到每小时段的频数,不采用核密度是此时只想要一个纵坐标
# def list_count(num_list):
#     return {x: num_list.count(x) for x in set(num_list)}
# y=list_count(emmm)
# y=np.asarray(y.values())
# 因为数据类型转换的问题,直接复制y-NUM

# 绘制折线图
# 0-23的自然数列
x = np.arange(24)
NUM=[30, 6, 4, 2, 3, 5, 5, 5, 10, 16, 19, 34, 31, 43, 32, 46, 28, 42, 45, 47, 36, 32, 39, 22]
plt.plot(x, NUM, color="green", linestyle="--", linewidth=1)


# 图表输出到本地
# 注意:在plt.show()后调用了 plt.savefig(),实际上已经创建了一个新的空白的图片(坐标轴),再plt.savefig()就会保存这个新生成的空白图片。
plt.savefig('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\time.png')
# 显示图形
plt.show()

再直观看一下更漂亮的图吧!

NUM=np.array(NUM)
sortIndex = np.argsort(-NUM) # 倒序,返回排序后各数据的原始下标
x_sort = x[sortIndex] # 重新进行排序,与y保持初始顺序一致
y_sort = NUM[sortIndex] # 重新进行排序,倒序

# 添加横纵坐标
plt.xlabel('time')
plt.ylabel('numbers')

# 设置字体,防止中文乱码
zhfont1 =fm.FontProperties(fname='F:\\Worktools\Fonts\MSYH.TTF')

#定义函数来显示柱状上的数值
def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2.-0.25, 1.01*height, '%s' % int(height))

plt.xticks(np.arange(len(x_sort)), x_sort)
a = plt.bar(np.arange(len(x_sort)),y_sort,color=['r','g','b', 'c', 'm', 'y'],label = '豪总发微博的时间')
# 显示图例
plt.legend(prop=zhfont1)
autolabel(a)
plt.savefig('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\time1.png')

# 显示图形
plt.show()

由图可知,豪总一般在下午15点或者晚上18、19点的时候十分活跃,但是在23点之后甚至00点之后也依然活跃,而且在凌晨1点到5点之间也是有数次在线,也要注意休息啊

下面再来看看点赞数、评论数和转发数,以下观点摘自知乎@蕴涵:

点赞数反应了综合好感度。主要是路人的好感度。对于知名的一线小花小生,点赞数几十万甚至破百万都不是太难的事。光看数字参考度不强。但可以对比一下。比如都是一张自拍,说中秋快乐,一位点赞数五十万,一位三十五万,结果就不言而喻了。评论数比较能反应粉丝活跃度。一般会回复的,不是纯粉,就是黑粉,回复数的多少,通常是粉丝战斗力的直观体现。同样用中秋自拍举例。一位点赞数五十万,回复数五万。一位点赞数三十五万,回复数九万。可见前者路人缘好,后者流量强。转发数是粉丝加路人粉的体现。简单说,你想知道这位明星到底有多红,看他的转发量就可以了,评论数是纯粉,点赞是路人纯粉和路人粉。那么转发数就基本上是这个明星目前的粉丝活跃度了。再拿中秋自拍举例。一人转发数二十四万,点赞五十万,评论五万。一人转发数十五万,点赞三十五万,评论九万。虽然在你印象里后者可能比较红,但实际上,是后者可能不如前者。(转自https://www.zhihu.com/question/41556587/answer/277402351

因此,我用了气泡图来反映三者之间的关系,因为豪总的数据基本都是万级的,我对数据做了一点点处理:

#绘制气泡图看点赞数、评论数和转发数的关系
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.font_manager import FontProperties

#一键防止中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

data = pd.read_csv('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\tendency.csv')
data.head()
#一共有582个数据,产生582种随机颜色
colors1 = np.random.rand(582)
plt.scatter(x = data.like/10000, 
           y = data.comment/10000, 
           s = data.repost/100,
           c = colors1, label = '转发数', alpha = 0.6
            )

# 添加横纵坐标
plt.xlabel('点赞数*10000')
plt.ylabel('评论数*10000')

# 添加标题
plt.title('点赞数、评论数和转发数的气泡图')
# 添加图例
plt.legend()
#设置画布大小
plt.figure(figsize=(40,25))
# 显示图形
plt.show()

通过气泡图也是可以看出当点赞数和评论数越多时,转发数所代表的圆圈也相应的比较大。

再看看这几年豪总的点赞数和评论数和转发数的具体趋势吧

#通过时间序列分析三者趋势
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from matplotlib.font_manager import FontProperties
from datetime import datetime

#一键防止中文乱码
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

df = pd.read_csv('f:\\Anaconda\\weiboSpider-master\\weibo\\rh\\tendency.csv', encoding='utf-8', index_col='date')
df.index = pd.to_datetime(df.index)  # 将字符串索引转换成时间索引
ts = df  # 生成pd.Series对象
# 查看数据格式
ts.head()
ax = ts.plot(
    x_compat=True,
    grid=True)
 # 显示背景的网格线
ax.set_title("pv-gmv")
ax.grid(linestyle="--", alpha=0.3)
plt.show()

再看看成团前后的差别吧,我是从2019年2月开始截取的数据

#截取近一年的数据看看具体趋势
ts_subset1 = ts[:'2019-02-01']  
ax1 = ts_subset1.plot(
    x_compat=True,
    grid=True)
#df[['A']]用于提取某一类
ax1.set_title("趋势图")
ax1.grid(linestyle="--", alpha=0.3)
plt.show()

可以明显看出,从2019年4月创造营开营到2019年6月8日成团出道,因为梦想而坚持,他值得!

最后我按照评论数排序,统计了前11条微博。
1.#元气爱豆的日常# 今天合唱300总决赛 大家一起加油 #元气爱豆的日常# 为了不露出衣服造型 我只能先这样哈哈哈哈哈 相信你们能给我们一个震撼的力量 期待哦#爱
(https://weibo.com/5732739112/I5Z43qCwQ?type=comment#_rnd1586784335026)

2.#元气爱豆的日常# 第一次有了坐飞机离不开的玩具 它睡着好舒服啊 #爱豆V力量# 哈哈哈哈哈哈 安全落地 大家放心咯 [带着微博去旅行]✈️
(https://weibo.com/5732739112/I67TWyAPJ?type=comment#_rnd1586784076207)

3.前往下一站北京的路上 一路下来见到很多不同群体的人 也有曾经一直没能去尝试的事情 大多美好的回忆 仿佛是你在停下脚步用心感受霎那间 #爱豆V力量# #元气爱豆的日常#
(https://weibo.com/5732739112/I5Z43qCwQ?type=comment#_rnd1586784335026)

4.讲真的#元气爱豆的日常# 自拍真的是门学问
(https://weibo.com/5732739112/I5Z43qCwQ?type=comment#_rnd1586784335026)

5.看我的月饼 #爱豆V力量# #元气爱豆的日常# 今天要次月饼哦 腊肉月饼我的最爱 哈哈哈
(https://weibo.com/5732739112/I5Z43qCwQ?type=comment#_rnd1586784335026)

6.#爱豆V力量##爱豆V力量# 暗中观察 @R1SE-赵让 @R1SE-刘也
(https://weibo.com/5732739112/I5IZNe2sH?type=comment#_rnd1586784566928)

7.成团满月的一天 小伙子们你们都很不错哦 @R1SE-何洛洛 @R1SE-赵让 @R1SE-张颜齐 @R1SE-周震南 @R1SE-姚琛 @R1SE-刘也 @R1SE-赵磊 @R1SE-夏之光 @R1SE-焉栩嘉
(https://weibo.com/5732739112/I5IZNe2sH?type=comment#_rnd1586784566928)

8.#VogueMe酷枇杷舞#@VogueMe 那就一起呗 R1SE-任豪的微博视频
(https://weibo.com/5732739112/I3rlWF81N?type=comment)

9.R1SE成员第一次的集体飞行✈️
(https://weibo.com/5732739112/I3rlWF81N?type=comment)

10.胡老师生日快乐 🎉 🎂🎂 @胡彦斌 R1SE-任豪的微博视频
(https://weibo.com/5732739112/HBVFwct0J?type=comment)

11.#元气爱豆的日常# #爱豆V力量# 他拍和自拍 我就觉得我自拍的还行... 哼你们觉得哪个好嘛
(https://weibo.com/5732739112/HBVFwct0J?type=comment)

哈哈,从豪总评论数最多的微博来看,都是有视频有自拍的,所以以后要多自拍哦,尽管蜜汁角度_

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • 这几天大家可能都会在抖音里看到,上海的流浪汉沈魏,沈大师的现场直播。 通过抖音里了解到沈大师是复旦大学的一位高才生...
    青山绿水123班阅读 249评论 0 0
  • ​A raven saw a swan and desired to secure for himself the...
    硅码老舅阅读 128评论 0 0
  • 我们家有一条狗,她的名字叫花生,是简友小黑送给我的。 花生来到我家快十个月了,她现在一岁半。 我们家没有养过狗,花...
    我是简悦阅读 256评论 0 4
  • 鲜花开满地,含惢叶绿绿。花朵迷人色,娇艳吐芳香。
    一切美好阅读 380评论 6 14
  • 1, 积木玩具没有按书上指导的步骤拼,而是按自己的想法拼出不同的形状。有创意,懂创新。 2, 这段时间穿什么衣服都...
    hl越望越远阅读 84评论 0 0