python微信PC端自动化-获取聊天记录

这篇具有很好参考价值的文章主要介绍了python微信PC端自动化-获取聊天记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

目前已有许多微信客户端的自动化工具,可供我们自动获取聊天记录、发送消息等等。不过微信网页版现在已无法登录,因此一些python库如itchat、wxpy等已经无法使用了(基于网页)。
现在有大佬开发出了一个好玩的微信自动化python库——wxauto。wxauto基于uiautomation、win32gui等自动化工具,利用windows桌面协议模拟用户的鼠标、键盘事件,实现对微信PC端的自动化操作,可供我们用于开发微信聊天机器人、群管理机器人等等。
github地址:https://github.com/cluic/wxauto

项目准备

1. 微信PC客户端
(注:这里最好把微信客户端升级至较新版本)

2. python3.x

3. wxauto
pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple


具体方法

1. 获取默认窗口的聊天记录

不指定好友或微信群时,获取微信客户端当前显示的窗口聊天记录。获取范围是当前窗口滚动条所能达到的范围。

from wxauto import *

wx = WeChat()  # 获取当前微信客户端
wx.GetSessionList()  # 获取会话列表

def get_default_messages():
    # 调用wxauto中的方法:GetAllMessage
    msgs = wx.GetAllMessage
    for msg in msgs:
        print('%s : %s' % (msg[0], msg[1]))
        
if __name__ == '__main__':
	get_default_messages()

2. 获取指定好友或群聊天记录

若想指定获取某人或者某个微信群的聊天记录,wxauto中有一个ChatWith的方法,可以指定获取的聊天窗口:

def ChatWith(self, who, RollTimes=None):
        '''
        打开某个聊天框
        who : 要打开的聊天框好友名,str;  * 最好完整匹配,不完全匹配只会选取搜索框第一个
        RollTimes : 默认向下滚动多少次,再进行搜索
        '''
        self.UiaAPI.SwitchToThisWindow()  
        RollTimes = 10 if not RollTimes else RollTimes
        # 当前显示的聊天列表中没找到指定名称的好友或群时,会滚动聊天列表界面,继续寻找
        def roll_to(who=who, RollTimes=RollTimes):
            for i in range(RollTimes):
                if who not in self.GetSessionList()[:-1]:
                    self.SessionList.WheelDown(wheelTimes=3, waitTime=0.1*i)
                else:
                    time.sleep(0.5)
                    # 这是点击客户端聊天列表中指定的窗口
                    self.SessionList.ListItemControl(Name=who).Click(simulateMove=False)
                    return 1
            return 0
        rollresult = roll_to()
        if rollresult:
            return 1
        else:
            self.Search(who)  # 当前显示的聊天列表中没找到指定名称的好友或群时,直接在搜索框中搜索
            return roll_to(RollTimes=1)

整理后代码如下:

from wxauto import *

wx = WeChat()
wx.GetSessionList()


def get_single_messages(name):
    wx.ChatWith(name)
    msgs = wx.GetAllMessage
    for msg in msgs:
        print('%s : %s' % (msg[0], msg[1]))


def get_multi_messages(names):
    for name in names:
        wx.ChatWith(name)
        msgs = wx.GetAllMessage
        for msg in msgs:
            print('%s : %s' % (msg[0], msg[1]))


if __name__ == '__main__':
    name = "好友昵称"
    get_single_messages(name)

    names = ['好友昵称', '微信群']
    get_multi_messages(names)

实际上,“获取指定好友或群消息”这一功能也是从方法1中扩展而来,原理很简单。ChatWith中的self.SessionList.ListItemControl(Name=who).Click()就是模拟用户鼠标,点击指定名称的聊天item,使得该名称的聊天窗口成为当前窗口,再调用wx.GetAllMessage获取聊天记录。

3. 获取更多聊天记录

如果不满足于获取当前窗口滚动条范围内的聊天记录,想要获取更多的,我们可以使用wxauto中的LoadMoreMessage()。不过官方的方法是直接在当前展示的窗口向上滚动一定的距离,经过试验后发现,有时候方法失效,无法拿到更多消息。
本人在此方法中做了改进:

(1)先定位到聊天窗口顶部的“查看更多消息”;
(2)然后点击“查看更多消息”,加载出更早的聊天记录;
(3)调用wx.GetAllMessage获取聊天记录。

改进后的获取更多聊天记录的方法如下:

def rollToTop(self):
	"""
	注意,本方法采用发送键盘事件来使聊天窗口跳转到顶部,因此先模拟鼠标点击微信聊天窗口,将其变为当前活跃窗口。不然发送键盘事件可能会失灵
    """
    # 计算窗口中央的位置
    rect = self.UiaAPI.BoundingRectangle
    x = rect.right - 100
    center_y = rect.top + rect.height() // 2

    # 定位至窗口顶端
    uia.Click(x, center_y)
    self.MsgList.SendKeys('{Home}', waitTime=1)  # 按键盘上的“Home”键,跳转至窗口顶部

    children = self.MsgList.GetChildren()
    # 遍历所有子元素
    for child in children:
        if child.ControlType == uia.ControlType.ButtonControl and child.Name == '查看更多消息':
            child.Click()
            break
    uia.Click(x, center_y)

注意,rollToTop方法需要添加到wxauto.py中的WeChat类中,因为需要调用WeChat类中的一些变量。
main方法中调用方法,获取更多聊天记录:文章来源地址https://www.toymoban.com/news/detail-772068.html

from wxauto import *

wx = WeChat()
wx.GetSessionList()


def get_more_messages(name):
    wx.ChatWith(name)
    wx.rollToTop()
    msgs = wx.GetAllMessage
    for msg in msgs:
        print('%s : %s' % (msg[0], msg[1]))
        

if __name__ == '__main__':
    name = "好友昵称"
    get_more_messages(name)

到了这里,关于python微信PC端自动化-获取聊天记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序接口自动化-获取微信code

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序登陆需要在小程序内部调用 wx.login() 的方法拿到 code,然后去请求服务获取到 token,后续的接口才能请求。 如何获取 code 去进行token获取。 Python 使用minium,JS 使用miniprogram-automator,这是微信官方提供的 UI 自动

    2024年02月08日
    浏览(49)
  • python 邮箱自动化操作(1) 邮件的自动获取 imapclient 非常详细!有范例!!

    python 3.8 imapclient:3.0.0  注意: 这里是以腾讯企业邮箱为例,不同的邮箱可能会有不同的编码格式,就可能会产生错误。 SMTP (Simple Mail Transfer Protocol) : SMTP 是用于发送电子邮件的标准协议。 客户端使用 SMTP 将邮件发送到邮件服务器。 SMTP 客户端连接到 SMTP 服务器的 25 号端口

    2024年04月22日
    浏览(34)
  • python 自动化学习(三) 句柄获取、模拟按键、opencv安装

         句柄是在操作系统中的一种标识符,相当于我们每个人的身份证一样,句柄在电脑中也是有唯一性的,我们启动的每一个程序都有自己的句柄号,表示自己的身份     为什么要说句柄,我们如果想做自动化操作时,肯定也不想程序占用了我们整个电脑,稍微操作一下

    2024年02月03日
    浏览(41)
  • Appium+python自动化(二十二)- 控件坐标获取(超详解)

    有些小伙伴或者是童鞋可能会好奇会问上一篇中的那个monkey脚本里的坐标点是如何获取的,不是自己随便蒙的猜的,或者是自己用目光或者是尺子量出来的吧,答案当然是:NO。获取控件坐标点的方式这里宏哥给小伙伴们分享和讲解三种方法,个人喜欢第二种,也推荐小伙伴

    2024年02月15日
    浏览(33)
  • Appium+python自动化(二十五)-获取控件ID(超详解)

    在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐标点,不是一样的,而是有变化的,因此在不同

    2024年02月15日
    浏览(44)
  • Python uiautomation获取微信内容!聊天记录、聊天列表、全都可获取

    Python uiautomation 是一个用于自动化 GUI 测试和操作的库,它可以模拟用户操作来执行各种任务。 通过这个库,可以使用Python脚本模拟人工点击,人工操作界面。本文使用 Python uiautomation 进行微信电脑版的操作。 以下是本次实验的版本号。 你需要安装 uiautomation 示例代码 代码解

    2024年02月04日
    浏览(66)
  • 爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中

      行话说得好,“爬虫学得好,牢饭吃到饱!”哈哈博主是因这句话入的坑,不为别的就为邀大家一起铁窗泪(bushi),本人虽小牛一只,但是喜爱捣鼓技术,有兴趣的小伙伴们可以共同探讨,也欢迎各位大佬们的指点,愿共同进步!   这次计划是翻墙爬取外网某网站

    2024年01月17日
    浏览(48)
  • chatgpt赋能python:Python如何获取微信聊天记录

    作为世界上最受欢迎的即时通讯工具之一,微信被大量用户使用。然而,微信聊天记录的备份和管理是一个重要的问题,特别是对于那些需要在工作和个人生活中快速查找重要信息的人来说。 幸运的是,Python编程语言提供了一个可靠且快速的方法来抓取微信聊天记录。在本文

    2024年02月13日
    浏览(72)
  • 如何用python自动化微信小程序

    如何微信小程序自动化抢到跨境安 最近,接到一个这样的需求,最终交付的结果如下: 为了保护隐私,做了马赛克的处理。 程序提供一个界面,用于启动模拟器和实现启动抢票脚本 模拟器被封装程序的安装目录下 整个自动化的工程采用python实现: 核心的伪代码如下图所示:

    2024年02月13日
    浏览(50)
  • 微信小程序自动化实战(appium+python)

    本文主要讲解一下使用appium操作微信小程序的流程 要使用appium进行自动化第一步当然是配置好appium环境,这块我就不在这里细讲了,直接开始吧; ps:新版微信不再需要手动开启X5内核了 注意点: 要操作微信小程序,则需要先进入到微信小程序 要先查看微信webview使用谷歌驱

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包