• Python3 itchat微信获取好友、公众号、群聊的基础信息


    Python3 itchat微信获取好友、公众号、群聊的基础信息

    一、简介

    安装 itchat 

    pip install itchat 

    使用个人微信的过程当中主要有三种账号需要获取,分别为:

    • 好友
    • 公众号
    • 群聊

    itchat为这三种账号都提供了整体获取方法与搜索方法。 
    而群聊多出获取用户列表方法以及创建群聊、增加、删除用户的方法。 
    这里我们分这三种分别介绍如何使用。

    二、好友

    好友的获取方法为get_friends,将会返回完整的好友列表。

    • 其中每个好友为一个字典
    • 列表的第一项为本人的账号信息
    • 传入update键为True将可以更新好友列表并返回
    #登录(只需要扫码一次,第二次运行手机微信会弹出确认框)
    itchat.auto_login(hotReload=True)
    #登录(每次登录都要扫二维码)
    #itchat.login()
    #爬取自己好友相关信息, 返回一个json文件
    friends = itchat.get_friends(update=True)[0:]
    #print(friends)

    好友的搜索方法为search_friends,有四种搜索方式:

    1. 仅获取自己的用户信息。

    2. 获取特定UserName的用户信息。

    3. 获取备注、微信号、昵称中的任何一项等于name键值的用户。

    4. 获取备注、微信号、昵称分别等于相应键值的用户 。
    其中三、四项可以一同使用,下面是示例程序:

    # 获取自己的用户信息,返回自己的属性字典
    itchat.search_friends()
    # 获取特定UserName的用户信息
    itchat.search_friends(userName='@abcdefg1234567')
    # 获取任何一项等于name键值的用户
    itchat.search_friends(name='wxceshi')
    # 获取分别对应相应键值的用户
    itchat.search_friends(wechatAccount='wceshi')
    # 三、四项功能可以一同使用
    itchat.search_friends(name='wxceshi', wechatAccount='wcceshi')

    三、公众号

    公众号的获取方法为get_mps,将会返回完整的公众号列表。

    • 其中每个公众号为一个字典
    • 传入update键为True将可以更新公众号列表并返回
    import  itchat
    #登录(只需要扫码一次,第二次运行手机微信会弹出确认框)
    itchat.auto_login(hotReload=True)
    #登录(每次登录都要扫二维码)
    #itchat.login()
    
    mpsList=itchat.get_mps(update=True)[1:]
    
    total=0
    for it in mpsList:
        print(it['NickName']+':'+it['Signature'])
        total=total+1
    
    print('公众号的数目是%d'%total)

    公众号的搜索方法为search_mps,有两种搜索方法:

    1. 获取特定UserName的公众号。

    2. 获取名字中含有特定字符的公众号 。
    如果两项都做了特定,将会仅返回特定UserName的公众号,下面是示例程序:

    # 获取特定UserName的公众号,返回值为一个字典
    itchat.search_mps(userName='@abcdefg1234567')
    # 获取名字中含有特定字符的公众号,返回值为一个字典的列表
    itchat.search_mps(name='gzh')
    # 以下方法相当于仅特定了UserName
    itchat.search_mps(userName='@abcdefg1234567', name='gzh')

    四、群聊

    群聊的获取方法为get_chatrooms,将会返回完整的群聊列表。 

    其中每个群聊为一个字典

    • 传入update键为True将可以更新群聊列表并返回通讯录中保存的群聊列表
    • 群聊列表为后台自动更新,如果中途意外退出存在极小的概率产生本地群聊消息与后台不同步
    • 为了保证群聊信息在热启动中可以被正确的加载,即使不需要持续在线的程序也需要运行itchat.run()
    • 如果不想要运行上述命令,请在退出程序前调用-itchat.dump_login_status(),更新热拔插需要的信息
    import  itchat
    
    #登录(只需要扫码一次,第二次运行手机微信会弹出确认框)
    itchat.auto_login(hotReload=True)
    #登录(每次登录都要扫二维码)
    #itchat.login()
    
    #itchat.run()
    mpsList=itchat.get_chatrooms(update=True)[1:]
    total=0
    for it in mpsList:
        print(it['NickName'])
        total=total+1
    print('群聊的数目是%d'%total)
    #显示所有的群聊,包括未保存在通讯录中的,如果去掉则只是显示在通讯录中保存的
    itchat.dump_login_status()
    
    #获取群成员信息,UserName的值是动态的(每登录一次生成新的UserName)
    memberList = itchat.update_chatroom('@@d79840106086e26e76f86857c440f403c8bbeedff17bf4851c7bf4901a3bfdeb')
    #print(memberList['MemberList'])
    #获取群成员昵称和群昵称
    mlist = memberList['MemberList']
    for it in mlist: 
        print(it['NickName']+':'+it['DisplayName'])

    群聊的搜索方法为search_chatrooms,有两种搜索方法:

    1. 获取特定UserName的群聊。

    2. 获取名字中含有特定字符的群聊 。
    如果两项都做了特定,将会仅返回特定UserName的群聊,下面是示例程序:

    # 获取特定UserName的群聊,返回值为一个字典
    itchat.search_chatrooms(userName='@abcdefg1234567')
    # 获取名字中含有特定字符的群聊,返回值为一个字典的列表
    itchat.search_chatrooms(name='LittleCoder')
    # 以下方法相当于仅特定了UserName
    itchat.search_chatrooms(userName='@abcdefg1234567', name='LittleCoder')

    群聊用户列表的获取方法为update_chatroom。

    • 群聊在首次获取中不会获取群聊的用户列表,所以需要调用该命令才能获取群聊的成员
    • 该方法需要传入群聊的UserName,返回特定群聊的用户列表
    memberList = itchat.update_chatroom('bcdefg67')

    创建群聊、增加、删除群聊用户的方法如下所示:

    • 由于之前通过群聊检测是否被好友拉黑的程序,目前这三个方法都被严格限制了使用频率
    • 删除群聊需要本账号为群管理员,否则会失败
    • 将用户加入群聊有直接加入与发送邀请,通过useInvitation设置
    • 超过40人的群聊无法使用直接加入的加入方式,特别注意
    memberList = itchat.get_friends()[1:]
    # 创建群聊,topic键值为群聊名
    chatroomUserName = itchat.create_chatroom(memberList, 'test chatroom')
    # 删除群聊内的用户
    itchat.delete_member_from_chatroom(chatroomUserName, memberList[0])
    # 增加用户进入群聊
    itchat.add_member_into_chatroom(chatroomUserName, memberList[0], useInvitation=False)
  • 相关阅读:
    Spring Boot重定向的使用方法
    Jmeter性能测试之Monitor监控(SSHMon Samples Collector)
    Jmeter性能测试之分布式(五)
    Jmeter性能测试之Monitor监控(四)
    Jmeter性能测试之关联(三)
    Jmeter性能测试之参数化(二)
    JVM 内存溢出(转载~)
    MySql workbeach 更改侧边栏大小
    Mybati example generatorConfig.xml 配置详解
    Rvm 进行gem安装时必须输入密码Your user account isn't allowed to install to the system RubyGems 解决方案
  • 原文地址:https://www.cnblogs.com/lizm166/p/9668617.html
Copyright © 2020-2023  润新知