wxauto获取所有聊天记录的问题

太长不看:多运行几次含有wx.LoadMoreMessage(1)的代码,到顶后就可以一次获取所有数据

from wxauto import *

# 获取当前微信客户端
wx = WeChat()
# 获取会话列表
wx.GetSessionList()
who = 'Python相关接单群'
# 打开聊天窗口
wx.ChatWith(who)

msgs = wx.GetAllMessage
while msgs[0][0] == '查看更多消息':
    wx.LoadMoreMessage(1)
    msgs = wx.GetAllMessage
    print(f'总共有{len(msgs)}条')
    
with open('output003.txt', 'w', encoding='utf=8') as file:
    for msg in msgs:
        file.write('%s : %s\n' % (msg[0], msg[1]))
print(f'总共有{len(msgs)}条')

如果是以下代码,当前窗口的意思是当前窗口的缓存,刚开始登录进入聊天记录的时候处于最下面的一条,往上回溯消息记录,查看了几条消息,那么以下代码就会获取几条消息

from wxauto import *

# 获取当前微信客户端
wx = WeChat()
# 获取会话列表
wx.GetSessionList()
who = '好友名字或者群名'
# 打开聊天窗口
wx.ChatWith(who)

# 输出当前聊天窗口聊天消息
msgs = wx.GetAllMessage
for msg in msgs:
    print('%s : %s'%(msg[0], msg[1]))

另一方面,以下代码会使得聊天界面向上滚动,但因为一些程序环境问题,程序会中断滚动并不会处于历史聊天记录的最顶端,也就是以下代码的实质是能滚动到何处,至这行起至最低下一行的聊天数据都可以获取。

from wxauto import *

# 获取当前微信客户端
wx = WeChat()
# 获取会话列表
wx.GetSessionList()
who = '好友名字或者群名'
# 打开聊天窗口
wx.ChatWith(who)

# 此处加个1可以自动滑到所有聊天记录,如果不加就只滑动两次刷新
# 实际情况复杂,测试后并不能一次获取所有数据
wx.LoadMoreMessage(1)

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

解决方法:多运行几次,当历史聊天记录滚动到最顶一行时就可以获取所有聊天记录:注意:因为情况复杂,通常运行一次程序并不能一次获取所有数据,需要多运行几次,当数据缓存完成,就可以一次获取所有数据

代码出处:python wxauto教程 - Acheng1011 - 博客园 (cnblogs.com)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值