爬取qq好友说说并对数据简单分析
程序员文章站
2022-04-26 08:05:53
...
接上节
到此我们就得到好友的说说信息了。
好友列表
一共135个好友。
好友说说
一共33018条说说。
下面对数据进行一些简单的处理。
一将说说的内容制作成词云
二统计一下说说的发表时间
三通过好友之间是否评论制作关系图
一.
1:将数据库中说说内容导出为csv文件
2.利用jieba分词提取关键词
import jieba.analyse
path ='D:\MongoDB\MongoDB\Server\\4.0\\bin\ShuoShuo2.csv'
fp = open(path,'r',encoding='utf-8')
content = fp.read()
try:
jieba.analyse.set_stop_words('D:\FileTest\中文停用词表.txt')
tags = jieba.analyse.extract_tags(content,topK=100,withWeight=True)
for item in tags:
print(item[0]+'\t'+str(int(item[1]*1000)))
finally:fp.close()
**3.利用TAGUL制作词云
(注:由于默认的字体无法显示中文字体,需要自己添加字体,可以导入本地的Office中的字体)**
二.
1.将qq号和说说发表时间导出
2.利用个人BDP制作图表
使用方法
对我们爬取的数据处理一下,类似的制作方法可以得到一些图表
三.
1.利用图表秀制作关系图(图表选择力引导图,需要购买)
2.由于对数据格式有要求,我们制作一张csv表格
import json
from multiprocessing import Pool
ownQQ = '使用的qq号'
client = pymongo.MongoClient('localhost',27017)
mydb = client['Qzone2']
qzone = mydb[ownQQ+'qzone']
Qinformation = mydb[ownQQ+'QQs']
commentNodes = mydb[ownQQ+'commentNodes']
errorNodes = mydb[ownQQ+'errorNodes']
#评论权重
def getNodeWeight(List):
Weight = 0
for l in List:
Weight = Weight + l['cmtnum']
return Weight
def getNodeInfo(qq):
try:
List = qzone.find({'qq': qq})
#该qq号的权重要提前算出来,每次都要插入
nodeWeight = 0
for l in List:
nodeWeight = nodeWeight + l['cmtnum']
# 用于判断一个qq中是否所有的说说都无人评论或点赞
# 如果最终为True 说明真的无人点赞或评论
judge1 = False if nodeWeight else True
if judge1:
data = {
'nodeID': qq,
'nodeName': qq,
'nodeClass': '评论',
'nodeWeight': nodeWeight,
'associationNode': '0'
}
commentNodes.insert_one(data)
errorNodes.insert_one({'qq':qq,'describation':'没有任何人评论'})
#重新赋值
List = qzone.find({'qq':qq})
first = 0
for l in List:
first = first +1
comments = l['comment']
if comments!=None:
second = 0
for c in comments:
second = second +1
commentQQ=json.loads(c)['qq_comment']
data = {
'nodeID':qq,
'nodeName':qq,
'nodeClass':'评论',
'nodeWeight':nodeWeight,
'associationNode':commentQQ
}
commentNodes.insert_one(data)
except:
#first 为页数
first = first % 50
describation = 'page:'+str(first)+' row:'+str(second)
errorNodes.insert_one({'qq':qq,'describation':describation})
QQ = [item['qq'] for item in Qinformation.find()]
if __name__ == '__main__':
pool = Pool(processes=4)
pool.map(getNodeInfo,QQ)
然后照上面的方法将数据库中的表导出为csv,在图表秀中上传数据就ok了。
力引导图是动态的,查看好友关系图
爬取qq好友说说并对数据简单分析就到此完结了,有疑问可以留言。