- 进QQ群:点我
不用图像识别,就可以拿到微信性别。
先上一张图片,
一共有三种状态
1 content-desc=“男”
2 content-desc=“女”
3 就是 连这个xml源码也没有 ,也就是对方性别未知的意思。
全部的xml源码都是以node为节点,我们要做的就是匹配出 男 女 未知
那我们首先要找寻到上面那一行xml部分源码
也就是找到包含 resource-id=“com.tencent.mm:id/anl” 为基准的节点,包含在
为什么不直接去匹配 男 女这种字眼呢?
原因是姓名和地区中可能包含 男 女 字眼,我们要准确匹配。
所以我们先找到包含resource-id="com.tencent.mm:id/anl"的这一行,
因为resource-id="com.tencent.mm:id/anl"在全部的xml代码中是唯一的,
再从这一行中拿出性别,那就很准确了。
现在思路就是:
1 首先获取手机设备
2 电脑端使用python程序通过adb命令控制手机
3 拿出手机端的页面
4 进行匹配并打印
开始我们的编写我们的代码:
import os,re
# 获取所有的手机设备
def getDevicesAll():
devices = []
try:
for dName_ in os.popen("adb devices"):
if "\t" in dName_:
if dName_.find("emulator") < 0:
devices.append(dName_.split("\t")[0])
devices.sort(cmp=None, key=None, reverse=False)
except:
pass
print(u"\n设备名称: %s \n总数量:%s台" % (devices, len(devices)))
return devices
# 导出手机端当前页面元素
def export(devices_name):
# 页面xml保存到手机存储
step1 = os.popen('adb -s {0} shell uiautomator dump /sdcard/{1}.xml'.format(devices_name,devices_name)).read()
if step1.find('UI') != -1:
print(devices_name+'\txml写进手机存储成功')
# 页面xml从手机存储推送到电脑,和当前运行程序同级
os.popen('adb -s {0} pull /sdcard/{1}.xml '.format(devices_name,devices_name))
print(devices_name+"\txml推送到电脑成功")
with open(devices_name + ".xml",encoding="utf-8") as f:
res = f.read()
return res
else:
print(devices_name+"\txml写进手机存储失败")
return "null"
# 匹配函数
def check_line(res,find_str):
list1 = re.findall( '<[^<]*?' + find_str + '[^>]*?>', res)
if list1:
return list1[0]
return "null"
def main():
# 以resource-id为基准进行匹配
findstr = 'resource-id="com.tencent.mm:id/anl"'
devices = getDevicesAll()
for d_name in devices:
res = export(d_name)
if res!="null":
result = check_line(res,findstr)
if result=="null":
print("此手机号性别未知")
elif result.find("男") != -1:
print("此手机号性别男")
elif result.find("女") != -1:
print("此手机号性别女")
if __name__=="__main__":
main()
主要代码就是上面的,
getDevicesAll函数获取所有连接电脑的usb手机设备,拿到设备名字
export函数获取当前连接的手机的页面
check_line函数拿到准确的一行,拿不到说明是未知性别
main函数进行逻辑判断等
我提供的主要是思路以及主要代码。
那些adb输入手机号,点击搜索,返回,重新搜索一系列操作都很简单,
就不啰嗦了。还有很多设备同时搜索控制进行识别手机号等,需要你们自己完成。
不过主要代码已经在上面了。你们进行自己定制更改即可。
对了,有的电脑上可能没有adb工具,百度一下adb安装等字眼,配置一下就好了。
- 进QQ群:点我