当前位置:首页 » 《随便一记》 » 正文

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

22 人参与  2022年07月22日 11:17  分类 : 《随便一记》  评论

点击全文阅读


 ????????????

? 博客首页:knighthood2001

系列专栏:uiautomation

? 欢迎点赞?评论?️

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

目录

前言

源代码 

主要变化①

主要变化②

结果

思考


前言

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

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

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

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

源代码 

# -*- coding: utf-8-*-import subprocessimport uiautomation as autoimport timeimport pandas as pddf = []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 = 1flag = Truestart_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循环,没有实现自动化,需要进行进一步的改进!!


点击全文阅读


本文链接:http://zhangshiyu.com/post/43686.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1