python实时获取微信群聊天(QQ群聊文本可视化分析)
python实时获取微信群聊天(QQ群聊文本可视化分析)本文所使用的文本数据需要添加一些规则一般爬取数据流程如下所示分为网站请求、伪装、解析、存储四个过程更为详细的爬取流程如下所示
本文选取2018年1月1日~1月31日QQ群聊数据
利用Python做文本可视化分析
首先要获取QQ群聊的文本数据
而爬虫可以很好的实现网页数据的爬取
一般爬取数据流程如下所示
分为网站请求、伪装、解析、存储四个过程
更为详细的爬取流程如下所示
需要添加一些规则
本文所使用的文本数据
是我从QQ电脑端后台导出的
导出文本数据后
编写程序,调试代码,做可视化分析
详细代码如下所示
#QQ群聊数据分析代码
importre
importdatetime
importseabornassns
importmatplotlib.pyplotasplt
importjieba
fromwordcloudimportWordCloud STOPWORDS
fromscipy.miscimportimread
#日期
def get_date(data):
#日期
dates=re.findall(r'\d{4}-\d{2}-\d{2}' data)
#天
days=[date[-2:]fordateindates]
plt.subplot(221)
sns.countplot(days)
plt.title('Days')
#周几
weekdays=[datetime.date(int(date[:4]) int(date[5:7]) int(date[-2:])).isocalendar()[-1]
fordateindates]
plt.subplot(222)
sns.countplot(weekdays)
plt.title('WeekDays')
#时间
defget_time(data):
times=re.findall(r'\d{2}:\d{2}:\d{2}' data)
#小时
hours=[time[:2]fortimeintimes]
plt.subplot(223)
sns.countplot(hours order=['06' '07' '08' '09' '10' '11' '12' '13' '14' '15' '16' '17'
'18' '19' '20' '21' '22' '23' '00' '01' '02' '03' '04' '05'])
plt.title('Hours')
代码演示:
#词云
defget_wordclound(text_data):
word_list=["".join(jieba.cut(sentence))forsentenceintext_data]
new_text=''.join(word_list)
pic_path='QQ.jpg'
mang_mask=imread(pic_path)
plt.subplot(224)
wordcloud=WordCloud(background_color="white" font_path='/home/shen/Downloads/fonts/msyh.ttc'
mask=mang_mask stopwords=STOPWORDS).generate(new_text)
plt.imshow(wordcloud)
plt.axis("off")
#内容及词云
defget_content(data):
pa=re.compile(r'\d{4}-\d{2}-\d{2}.*?\(\d \)\n(.*?)\n\n' re.DOTALL)
content=re.findall(pa data)
get_wordclound(content)
defrun():
filename='新建文本文档.txt'
with open(filename) as f:
data=f.read()
get_date(data)
get_time(data)
get_content(data)
plt.show()
做出文本可视话图后,可以得出如下结论
在2018年1月1日~1月31日统计180班群聊中
1月2日这一天群聊次数最多
每周的星期二群聊次数做多
每天的16时群聊次数最多
做词云图发现
“全体成员”出现的词频最多