欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

爬取qq好友说说并对数据简单分析

程序员文章站 2022-04-26 08:05:53
...

接上节
到此我们就得到好友的说说信息了。
好友列表
爬取qq好友说说并对数据简单分析
一共135个好友
好友说说
爬取qq好友说说并对数据简单分析
一共33018条说说
下面对数据进行一些简单的处理。
一将说说的内容制作成词云
二统计一下说说的发表时间
三通过好友之间是否评论制作关系图

一.
1:将数据库中说说内容导出为csv文件
爬取qq好友说说并对数据简单分析
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中的字体)**
爬取qq好友说说并对数据简单分析
二.
1.将qq号和说说发表时间导出
爬取qq好友说说并对数据简单分析
2.利用个人BDP制作图表
使用方法
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
对我们爬取的数据处理一下,类似的制作方法可以得到一些图表
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
爬取qq好友说说并对数据简单分析
三.
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好友说说并对数据简单分析就到此完结了,有疑问可以留言。