python怎么通过手机号定位_python通过手机号获取微信男女性别
不用图像识别,就可以拿到微信性别。
先上一张图片,
通过红框里的小头像可以看出是男是女,或者未知。
我们可以通过判断头像来获取性别,识别男女。
但是太麻烦和复杂了。
其实我们可以通过界面元素进行拾取当前性别
首先打开安卓的界面层级拾取工具 一般位于安卓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通过手机号获取微信男女性别相关推荐
- python怎么通过手机号定位_python 通过手机号识别出对应的微信性别(实例代码)
python 通过手机号识别出对应的微信性别,具体代码如下所述: def getGender(self,tel): self.d(resourceId="com.tencent.mm:id/ ...
- python手机号定位_python实现手机号归属地相关信息查询
根据指定的手机号码,查询其归属地等相关信息,python实现: 手机号文件:phone.txt18815484184 18818701639 18818773287 18818791154 18819 ...
- python爬虫新浪新闻_python爬虫之获取新浪新闻信息
一:前言 windows平台: 1):谷歌的chrome浏览器:python3.6的软件安装包,需要导入的库有: [python] view plain copy pip install reque ...
- python手机号定位_python手机号前7位归属地爬虫
需求分析 项目上需要用到手机号前7位,判断号码是否合法,还有归属地查询.旧的数据是几年前了太久了,打算用python爬虫重新爬一份 单线程版本 # coding:utf-8 import reques ...
- python学习的一个定位_python学习之——selenium元素定位
web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 其中定位元素尤为关键,此篇是使用webdriver通过页面各个 ...
- python selenium iframe怎么定位_python+selenium 切换iframe
转载自 http://www.cnblogs.com/yoyoketang/p/6128619.html 前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢, ...
- python selenium iframe怎么定位_python+selenium四:iframe查看、定位、切换
iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或nam ...
- python爬虫知乎用户_python爬虫如何获取知乎问答内容?
有疑问和困惑的时候,除了去书本翻阅资料,还可以在知乎上发起提问,和来自不同地方的小伙伴一起进行讨论.小编觉得这种学习的方法不仅能够自己理解知识,而且别人也会在回答中有所提升,是个一举两得的好办法.最近 ...
- python批量生成文件夹_python实现批量获取指定文件夹下的所有文件的厂
本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...
最新文章
- pyEcharts安装及详细使用指南
- Python中*args 和**kwargs的用法探讨
- HDU 6092 Rikka with Subset 思维 递推
- maven学习十之myEclipse搭建maven项目总结
- QT关于使用MSVC之后,之前用MGW编译代码,用这个GDB调试器出现error
- linux在线更新curl,Linux:curl
- linux应用程序启动时加载库错误问题
- 飞利浦医疗收购Direct Radiology,加强远程放射学服务能力
- 拿什么奉献给你,我的敏感信息(转)
- Mybatis编写初始化Dao代码
- JSON: jasckson 字段 过滤
- 自动外呼——设计思路整理篇
- 香农编码实验报告matlab,实验三 香农编码
- MATLAB小技巧(7)简单帧差法实现
- 每日一淘赋能产品经济全面发展
- 华为 USG 双机热备
- 运营商线路细分_电信运营商客户细分
- 开启oracle的acfs,配置OracleACFS集群文件系统
- 北京师范大学计算机试题二答案,北京师范大学期末计算机试题二
- linux修改密码时候提示太简单了怎么办,linux修改密码
热门文章
- 边边角角,偶尔遇到——javascript
- 边边角 直角时 钝角时_几何中的角度名称:锐角,钝角,直角和直角,已定义...
- uboot中usb storage启动方法1
- C语言 找第一个只出现一次的字符
- Clojure的并发(一) Ref和STM
- java中的1L是啥意思?
- SkyWalking 详细安装
- argc和argv的说明
- 蓝桥杯真题 19省2-年号字串 小明用字母 A 对应数字 1, B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27, AB
- 怎样处理部门之间相互推诿责任