Python如何扫描微信非好友名单
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,本篇内容主要讲解"Python如何扫描微信非好友名单",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python如何扫描微信非好友名单"吧!准备1.Appi
千家信息网最后更新 2025年11月15日Python如何扫描微信非好友名单
本篇内容主要讲解"Python如何扫描微信非好友名单",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python如何扫描微信非好友名单"吧!
准备
1.Appium环境搭建
2.手动操作流程图转自动操作流程图
遇到暂停基本是聊天窗识别不到了,可以手动上滑一下,让程序识别下一个聊天窗口。需要先登陆微信号。
代码
from appium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timefrom selenium.common.exceptions import StaleElementReferenceException# platformVersion = input('系统版本号(platformVersion): ')# deviceName = input('设备名称(deviceName):')desired_caps = { "platformName": "Android", # 系统 "platformVersion": '10.0', # 系统版本号 # "platformVersion": platformVersion, # 系统版本号 "deviceName": 'b68548ed', # 设备名 # "deviceName": deviceName, # 设备名 "appPackage": "com.tencent.mm", # 包名 "appActivity": ".ui.LauncherUI", # app 启动时主 Activity 'unicodeKeyboard': True, # 使用自带输入法 'noReset': True # 保留 session 信息,可以避免重新登录}def is_element_exist(driver, by, value): """判断元素是否存在""" try: driver.find_element(by=by, value=value) except Exception as e: return False else: return Truedef break_key(n): """点击返回按钮""" for i in range(n): el1 = wait.until(EC.element_to_be_clickable((By.ACCESSIBILITY_ID,"返回"))) el1.click()def swipe_up(): """向上滑动屏幕""" # 获取屏幕的size size = driver.get_window_size() # 获取屏幕宽度 width width = size['width'] # 获取屏幕高度 height height = size['height'] x1 = width*0.5 y1 = height*0.45 y2 = height*0.3 driver.swipe(x1,y1,x1,y2,3000) print("向上滑动") if __name__ == '__main__': driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) # 设置等待 wait = WebDriverWait(driver, 300) status = True n = 2 count = 1 while status: try: # 点击通讯录 a1 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc="当前所在页面,与的聊天"]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView"))) a1.click() #向上滑动 swipe_up() if n < 13: # 进入第一个聊天窗口,公众号为1,用户元素定位从2开始,一页最多12,每滑动屏幕从新开始到12. g73 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc='当前所在页面,与的聊天']/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/com.tencent.mm.ui.mogic.WxViewPager/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout[%d]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.view.View"%(n)))) g73.click() print("进入了第%d个好友聊天窗口"%(count)) count += 1 else: n -= 1 g73 = wait.until(EC.element_to_be_clickable( (By.XPATH, "//android.widget.FrameLayout[@content-desc='当前所在页面,与的聊天']/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/com.tencent.mm.ui.mogic.WxViewPager/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout[%d]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.view.View"%(n)))) g73.click() print("进入了第%d个好友聊天窗口"%(count)) count += 1 # 判断聊天窗是否有发送消息的元素 is_weichat = is_element_exist(driver, "id", "com.tencent.mm:id/ijq") if is_weichat == True: while True: # # 有发消息则点击 wait.until(EC.element_to_be_clickable( (By.ID, "com.tencent.mm:id/ijq"))).click() print("点击了发消息") #点击+号 is_jia = is_element_exist(driver, 'id', 'com.tencent.mm:id/ay7') #判断是否有加号 if is_jia == True: el4 = wait.until(EC.element_to_be_clickable((By.ID, "com.tencent.mm:id/ay7"))) el4.click() print('点击+号') #判断是否为转账 is_zhuanzhang = wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView"))) if is_zhuanzhang.text == "转账": # is_zhuanzhang = is_element_exist(driver, 'xpath', '//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView') # if is_zhuanzhang == True: #点击转账 el5 = wait.until(EC.element_to_be_clickable((By.XPATH,"//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.view.ViewGroup/android.widget.GridView/android.widget.LinearLayout[6]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView[2]"))) el5.click() print('点击转账') #输入金额0.01 el6 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/jf4"))) el6.send_keys("0.01") print('输入金额') #点击确认转账 el7 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/e6c"))) el7.click() print('点击确认转账') time.sleep(2) #判断是否有知道了 is_not_friend = is_element_exist(driver,'id','com.tencent.mm:id/ffp') if is_not_friend == True: #点击知道了 el8 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/ffp"))) el8.click() print('点击知道了') #获取用户名称并打印 el9 = wait.until(EC.element_to_be_clickable((By.ID,"com.tencent.mm:id/h3k"))) print('不是好友的微信名称为:',el9.text) with open('weixin.txt','a+')as f: f.write('不是好友的微信名称:' + el9.text + '') driver.keyevent(4) driver.keyevent(4) driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break else: #没有知道则返回 driver.keyevent(4) break_key(2) n += 1 print('返回') break else: #没有转账则返回到首页 driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break else: #没有+号则返回到首页 driver.keyevent(4) driver.keyevent(4) print('返回') n += 1 break except StaleElementReferenceException: print('捕获StaleElementReferenceException异常')到此,相信大家对"Python如何扫描微信非好友名单"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
好友
转账
屏幕
系统
名单
元素
名称
所在
消息
版本
设备
页面
输入
内容
天窗
手动
流程
流程图
用户
金额
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重庆直播软件开发公司有哪些
珠海智能软件开发电话
湖南软考数据库
湖南中旭联软件开发有限公司
中信银行总行软件开发收入
蓝讯网络技术有限公司
腾讯关于未成年网络安全
我的世界服务器怎么制作在线时间
服务器安装ip条
vs2019连接数据库
安信证券的服务器怎么样
sql数据库怎么导出备份
深圳市理奥网络技术
软件开发与地图
网络安全事件分类分为几级
服务器怎么关发包限制
绿茵信仰数据库
球员跑动距离 数据库
塘厦服务器
铁代谢数据库
软件开发维护授权书
软件开发合同不付款
潍坊联想服务器代理哪家服务好
上海电脑软件开发服务费
排版软件开发实例
将del文件导入数据库
软件开发属于大数据吗
浅析数据库系统未来发展趋势
轻云服务器和阿里云
csgo完美世界无法连接服务器