irpas技术客

【uiautomation】微信好友昵称及备注获取(存储到excel中)_knighthood2001_python uiautomation 微信

网络投稿 2269

?🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥰 博客首页:knighthood2001

🌞?系列专栏:uiautomation

😗 欢迎点赞👍评论🗨?

?? 热爱python,期待与大家一同进步成长!!??

目录

前言

源代码?

主要变化①

主要变化②

结果

思考


前言

笔者之前写过类似的文章(如下),不过只是获取了微信好友的昵称,并没有获取微信好友的备注以及标签。

【uiautomation】微信好友列表获取(存储到txt中)

因此这次笔者写了将微信好友昵称、备注、标签保存到excel中。?

注:此次代码和之前写的文章的思路大致一样,就不重复前面步骤了,直接上源代码及结果。?

源代码? # -*- coding: utf-8-*- import subprocess import uiautomation as auto import time import pandas as pd df = [] columns = ['序号', '昵称', '备注', '标签'] # excel的标题栏 # ToDo 这里需要更改微信所在地址,可通过桌面微信图标右键打开文件所在的位置查找到路径 subprocess.Popen('E:\微信\WeChat\WeChat.exe') wechatWindow = auto.WindowControl(searchDepth=1, className='WeChatMainWndForPC', Name='微信') # 点击通讯录 button = wechatWindow.ButtonControl(Name='通讯录') button.Click() # 点击通讯录管理 administration = wechatWindow.ButtonControl(Name="通讯录管理") administration.Click() communication_administration = auto.WindowControl(Name="通讯录管理", ClassName="ContactManagerWindow") # 将鼠标放至内容的中心,滚轮对联系人列表才能生效 communication_administration.MoveCursorToMyCenter() list1 = communication_administration.ListControl(Name="") # a表示存储列表,b表示计数器 a = [] b = 1 flag = True start_time = time.time() print("""开始时间:{}""".format(start_time)) while flag: list1 = communication_administration.ListControl(Name="") # nickname = list1.GetChildren()[0].TextControl() nickname = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[1].GetChildren()[1] beizhu = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl() biaoqian = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl() # print(nickname.Name) # print(beizhu.Name) # print(biaoqian.Name) '''判断是不是在列表a中,如果''' if len(a) == 0 or nickname.Name != a[-1]: # print(nickname.Name) # print(beizhu.Name) # print(biaoqian.Name) # print("="*50) print(b, '', nickname.Name) df.append([b, nickname.Name, beizhu.Name, biaoqian.Name]) d = pd.DataFrame(df, columns=columns) d.to_excel("微信朋友信息.xlsx", index=False) b += 1 a.append(nickname.Name) # 滚轮下滚 auto.WheelDown(waitTime=0.01) # 手动实现滚轮滚动到底操作 # 空格 if auto.IsKeyPressed(auto.Keys.VK_SPACE): print("到底了") for j in list1.GetChildren()[1:]: last_nickname = j.TextControl() if last_nickname != a[-1]: print(b, '', last_nickname.Name) last_beizhu = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl() last_biaoqian = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl() df.append([b, last_nickname.Name, last_beizhu.Name, last_biaoqian.Name]) d = pd.DataFrame(df, columns=columns) d.to_excel("微信朋友信息.xlsx", index=False) b += 1 a.append(last_nickname) print(a) flag = False end_time = time.time() sum_time = end_time - start_time print("""运行时间:{}s""".format(sum_time)) 主要变化①

主要使用inspect.exe获取昵称、备注、标签。?

nickname = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[1].GetChildren()[1] beizhu = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl() biaoqian = list1.GetChildren()[0].GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl()
主要变化② df = [] columns = ['序号', '昵称', '备注', '标签'] # excel的标题栏 df.append([b, nickname.Name, beizhu.Name, biaoqian.Name]) d = pd.DataFrame(df, columns=columns) d.to_excel("微信朋友信息.xlsx", index=False)

到最底部时,将获取的昵称等信息存入excel中?

last_beizhu = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[2].ButtonControl() last_biaoqian = j.GetFirstChildControl().GetFirstChildControl().GetChildren()[3].ButtonControl() df.append([b, last_nickname.Name, last_beizhu.Name, last_biaoqian.Name]) d = pd.DataFrame(df, columns=columns) d.to_excel("微信朋友信息.xlsx", index=False)
结果

思考

????????目前该代码还存在一点点问题,比如,我有421个好友,最终excel中只获得了420个好友,原因是有些好友的昵称相同,接下来需要进行改进。?

? ? ? ? 此外,需要手动空格来结束while循环,没有实现自动化,需要进行进一步的改进!!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #uiautomation #微信