不用图像识别,就可以拿到微信性别。

先上一张图片,

通过红框里的小头像可以看出是男是女,或者未知。

我们可以通过判断头像来获取性别,识别男女。

但是太麻烦和复杂了。

其实我们可以通过界面元素进行拾取当前性别

首先打开安卓的界面层级拾取工具    一般位于安卓sdk包下tools下      的uiautomatorviewer.bat

我们发现根本不需要通过图像识别,就轻而易举的拿到性别了。

这是手动获取的,那我们怎样自动获取呢。

我们可以通过程序进行获取,

比如 appium自动化测试工具,adb命令,android自动化测试Uiautomator框架 等。。

首先appium 需要配置很多环境,Uiautomator框架要在android里实现。

而adb命令比较通用,python调用adb也很方面。

那我们就用adb写自动获取代码。

通过uiautomatorviewer.bat我们拿出当前的xml代码

(点击uiautomatorviewer界面上左上角水平第四个按钮保存即可)

当前页面的全部xml代码(经过格式化以后的排版,默认是一行):

包含所要信息的一行xml的代码:

发现 性别在  content-desc="男" 这个地方  ,

一共有三种状态

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( ']*?>', 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安装等字眼,配置一下就好了。

转发请备注博主链接。

欢迎进(Q)群,帮你解决问题:

python怎么通过手机号定位_python通过手机号获取微信男女性别相关推荐

  1. python怎么通过手机号定位_python 通过手机号识别出对应的微信性别(实例代码)

    python 通过手机号识别出对应的微信性别,具体代码如下所述: def getGender(self,tel): self.d(resourceId="com.tencent.mm:id/ ...

  2. python手机号定位_python实现手机号归属地相关信息查询

    根据指定的手机号码,查询其归属地等相关信息,python实现: 手机号文件:phone.txt18815484184 18818701639 18818773287 18818791154 18819 ...

  3. python爬虫新浪新闻_python爬虫之获取新浪新闻信息

    一:前言 windows平台: 1):谷歌的chrome浏览器:python3.6的软件安装包,需要导入的库有: [python]  view plain copy pip install reque ...

  4. python手机号定位_python手机号前7位归属地爬虫

    需求分析 项目上需要用到手机号前7位,判断号码是否合法,还有归属地查询.旧的数据是几年前了太久了,打算用python爬虫重新爬一份 单线程版本 # coding:utf-8 import reques ...

  5. python学习的一个定位_python学习之——selenium元素定位

    web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...

  6. python selenium iframe怎么定位_python+selenium 切换iframe

    转载自 http://www.cnblogs.com/yoyoketang/p/6128619.html 前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢, ...

  7. python selenium iframe怎么定位_python+selenium四:iframe查看、定位、切换

    iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...

  8. python爬虫知乎用户_python爬虫如何获取知乎问答内容?

    有疑问和困惑的时候,除了去书本翻阅资料,还可以在知乎上发起提问,和来自不同地方的小伙伴一起进行讨论.小编觉得这种学习的方法不仅能够自己理解知识,而且别人也会在回答中有所提升,是个一举两得的好办法.最近 ...

  9. python批量生成文件夹_python实现批量获取指定文件夹下的所有文件的厂

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

最新文章

  1. pyEcharts安装及详细使用指南
  2. Python中*args 和**kwargs的用法探讨
  3. HDU 6092 Rikka with Subset 思维 递推
  4. maven学习十之myEclipse搭建maven项目总结
  5. QT关于使用MSVC之后,之前用MGW编译代码,用这个GDB调试器出现error
  6. linux在线更新curl,Linux:curl
  7. linux应用程序启动时加载库错误问题
  8. 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
  9. 拿什么奉献给你,我的敏感信息(转)
  10. Mybatis编写初始化Dao代码
  11. JSON: jasckson 字段 过滤
  12. 自动外呼——设计思路整理篇
  13. 香农编码实验报告matlab,实验三 香农编码
  14. MATLAB小技巧(7)简单帧差法实现
  15. 每日一淘赋能产品经济全面发展
  16. 华为 USG 双机热备
  17. 运营商线路细分_电信运营商客户细分
  18. 开启oracle的acfs,配置OracleACFS集群文件系统
  19. 北京师范大学计算机试题二答案,北京师范大学期末计算机试题二
  20. linux修改密码时候提示太简单了怎么办,linux修改密码

热门文章

  1. 边边角角,偶尔遇到——javascript
  2. 边边角 直角时 钝角时_几何中的角度名称:锐角,钝角,直角和直角,已定义...
  3. uboot中usb storage启动方法1
  4. C语言 找第一个只出现一次的字符
  5. Clojure的并发(一) Ref和STM
  6. java中的1L是啥意思?
  7. SkyWalking 详细安装
  8. argc和argv的说明
  9. 蓝桥杯真题 19省2-年号字串 小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB
  10. 怎样处理部门之间相互推诿责任