太长不看:多运行几次含有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)