当前位置:   article > 正文

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

wxauto

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

  1. from wxauto import *
  2. # 获取当前微信客户端
  3. wx = WeChat()
  4. # 获取会话列表
  5. wx.GetSessionList()
  6. who = 'Python相关接单群'
  7. # 打开聊天窗口
  8. wx.ChatWith(who)
  9. msgs = wx.GetAllMessage
  10. while msgs[0][0] == '查看更多消息':
  11. wx.LoadMoreMessage(1)
  12. msgs = wx.GetAllMessage
  13. print(f'总共有{len(msgs)}条')
  14. with open('output003.txt', 'w', encoding='utf=8') as file:
  15. for msg in msgs:
  16. file.write('%s : %s\n' % (msg[0], msg[1]))
  17. print(f'总共有{len(msgs)}条')

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

  1. from wxauto import *
  2. # 获取当前微信客户端
  3. wx = WeChat()
  4. # 获取会话列表
  5. wx.GetSessionList()
  6. who = '好友名字或者群名'
  7. # 打开聊天窗口
  8. wx.ChatWith(who)
  9. # 输出当前聊天窗口聊天消息
  10. msgs = wx.GetAllMessage
  11. for msg in msgs:
  12. print('%s : %s'%(msg[0], msg[1]))

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

  1. from wxauto import *
  2. # 获取当前微信客户端
  3. wx = WeChat()
  4. # 获取会话列表
  5. wx.GetSessionList()
  6. who = '好友名字或者群名'
  7. # 打开聊天窗口
  8. wx.ChatWith(who)
  9. # 此处加个1可以自动滑到所有聊天记录,如果不加就只滑动两次刷新
  10. # 实际情况复杂,测试后并不能一次获取所有数据
  11. wx.LoadMoreMessage(1)
  12. msgs = wx.GetAllMessage
  13. for msg in msgs:
  14. print('%s : %s'%(msg[0], msg[1]))

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/928880
推荐阅读
相关标签
  

闽ICP备14008679号