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时群聊次数最多
做词云图发现
“全体成员”出现的词频最多
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com