有一批手机号码,想查到归属地。
直接上代码:
'''
获取归属地。
通过模拟手机拨号,取手机上显示的归属地。
方法是uiautomator2
'''
import uiautomator2 as u2 #pip install uiautomator2
from time import sleep
import pandas as pd
def get_归属地(phone_no='13903570832'): #模拟输入号码,获取手机屏幕上显示的 归属地
for n in phone_no[:7]:
d(text=f'{n}').click()
sleep(0.5)
归属地 = d(resourceId="com.huawei.contacts:id/num_location").get_text() # '山西临汾 移动'
for i in range(7):
d.press('delete') # 再删除7位号码
return 归属地
if __name__ == '__main__':
d=u2.connect_usb('WKXNW20820006654') #畅享20
# d=u2.connect_usb('GEMZZPZDOZVGMRSO') #小米 note11
# d.debug=True #显示过程信息
# d.debug=False #不在显示过程信息, 仅结果
#
# print(d.info)
# print(d.app_current()) #当前app。今后用于打开app时的参数
# print(d.serial) # 获取设备序列号
# print(d.wlan_ip) # 获取WIFI IP
print(d.device_info) # 获取详细的设备信息
d.unlock() # 解锁屏幕
d.app_stop_all() #关闭所有app
d.app_start('com.huawei.contacts', 'com.android.contacts.activities.DialtactsActivity') # 打开联系人
sleep(2) #等app启动
x = '//*[@resource-id="com.huawei.contacts:id/bottom_navgation"]//*[@resource-id="androidhwext:id/topIcon"]' # 最后一行, 三个按钮
d.xpath(x).all()[0].click() # 点击 "电话" of [电话、联系人、收藏],切换到拨号盘
phone_nos=[15004110920,13354304171,13031121250,15803521488,18738138325,13231503075]
for phone_no in phone_nos:
address=get_归属地(str(phone_no))
print(phone_no,address)
pass
看到了想要的结果:
方法是通过USB线连接手机,使用uiautomator2,打开拨号盘(联系人app),模拟输入手机号码15004110920
然后手机上会显示出归属地为 “辽宁大连 移动”, 将这个地址取回来即可:
模拟按删除键,很多次,重新输入新号码13354304171,以此类推
就是有点慢,但稳定可靠。
实验环境:
windows10、anacorda、uiautomator2
usb线、手机是 华为畅享20p型号(DVC-TN20)、序号’WKXNW20820006654’