美文网首页Python学习资料整理
Python篇-itchat获取微信好友信息

Python篇-itchat获取微信好友信息

作者: 左手代码__右手诗 | 来源:发表于2019-03-18 20:47 被阅读19次

    itchat获取微信好友信息

    itchat功能很强大,网上有关itchat的资料很多,使用起来也很有趣。介于技术修养还不够深厚,本文只是介绍了冰山一角,更多更有趣的功能日后还需要多多学习。
    本文介绍了使用itchat接口获取微信好友列表中男性和女性朋友的比例,以及他们的基本信息,包括地区、性别、省份、签名等等。最后把这些好友信息写入到csv文件中,能够很清晰直白地做一些分析(比如自己男性朋友居多,还是女性朋友居多)
    参照一些资料,自己也做了一点点修改,demo如下:

    #!/usr/bin/env python 
    # -*- coding:utf-8 -*-
    
    import itchat
    from pandas import DataFrame
    
    itchat.auto_login(True)
    friends = itchat.get_friends(update=True)[0:]
    # print(friends)
    total = len(friends[1:])#从1开始,0是自己不能算
    #获取男女性朋友比例
    def male_female_ratio():
        male = female = other = 0  # 初始化计数器
        for i in friends:
            sex = i['Sex']
            if sex == 1:
                male += 1
            elif sex == 2:
                female += 1
            else:
                other += 1
        # print('男性比例:%.2f%%' + '女性比例:%.2f%%' + '其他比例:%.2f%%' %(male/total*100,female/total*100,other/total*100))
        print('男性比例:%.2f%%' %(male/total*100) + "\n" + '女性比例:%.2f%%' %(female/total*100) + "\n" + '其他比例:%.2f%%' %(other/total*100))
    
    def get_data(arg):
        data_list = []
        for i in friends:
            value = i[arg]
            if value == 1:#1代表男/2代表女
                value = '男'#这里把1/2换成了男女
                data_list.append(value)
            elif value == 2:
                value = '女'
                data_list.append(value)
            elif value == 0:
                value = '未知'
                data_list.append(value)
            else:
                data_list.append(value)
        return data_list
    
    def ger_friend_msg():
        import time
        RemarkName = get_data('RemarkName')
        NickName = get_data('NickName')  # 是一个列表
        City = get_data('City')
        Province = get_data('Province')
        Sex = get_data('Sex')
        Signature = get_data('Signature')
        data = {'RemarkName(备注)': RemarkName, 'Nickname(昵称)': NickName, 'City(城市)': City, 'Province(省份)': Province,
                'Sex(性别)': Sex, 'Signature(微信签名)': Signature}  # 字典,字典的value是列表
        frame = DataFrame(data)
        time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())  # 生成一个当前事件,以这个时间来命名最后地csv文件,能很直白地看出最新执行脚本的时间和最新的csv文件
        file_name = time + 'data.csv'
        frame.to_csv(file_name, encoding='utf_8_sig', index=True)
    
    if __name__ == '__main__':
        male_female_ratio()
        ger_friend_msg()
    

    运行环境win10+python3
    最终的结果如下:
    打印出的比例:


    比例

    csv截图:


    在这里插入图片描述
    这个脚本还有可以优化的地方,后期空了再做些小优化吧。

    相关文章

      网友评论

        本文标题:Python篇-itchat获取微信好友信息

        本文链接:https://www.haomeiwen.com/subject/bjcimqtx.html