python获取当前地址,python根据ip获取地理位置
本文主要介绍获取当前设备位置的python实现,以及计算机如何获取当前地理位置?它不像我们一样对地理位置有感性认识,它只知道数据。简而言之,电脑可以通过获取当前连接的公共IP来逆向定位环境,有需要的朋友可以参考一下。
00-1010一、环境介绍1。搜索“高德地图API”,进入官网,注册你的账号2。进入控制台并创建相关应用程序3。进入web服务API接口2。密码
目录
Python版本 :皮顿3.8开发工具 :皮查姆21第三方库 : 请求
您还将使用Python附带的json库。因为调用API返回的结果是json或者XML形式的消息,所以目前除了少数传统公司使用XML来传递信息外,大部分互联网公司都会使用JSON库来传递信息。
一、环境介绍
1. 搜索 “高德地图API” ,进入官网,注册自己账号
点击头像-应用管理-创建应用-选择web应用-创建-复制密钥。
2.进入控制台,创建相关应用
3.进入web服务API界面
(1)获取当地信息
查询本机信息:
导入uuid
导入插座
导入请求
# (1)获取本地mac地址
def get _ MAC _ adders():
mac=uuid。UUID(int=uuid.getnode())。十六进制[-12:]
返回“:”。join([MAC[e : e 2]for e in range(0,11,2)])
dd=get _ mac _ adderss()
打印(dd)
# (2)获取本地计算机名
my name=socket . getfqdn(socket . gethostname())
# (3)获取本地ip
my addr=socket . gethostbyname(my name)
打印(我的名字)
打印(我的地址)
# (4)获取当前用户名
定义用户():
导入getpass
user_name=getpass.getuser()
返回用户名
打印(用户())
我们发现以上信息查询的是电脑的内网IP,所以无法得到内网的地理位置。那么,如何才能拿到公有IP呢?
导入请求
导入json
URL= 3358httpbin.org/IP #您也可以在浏览器中直接访问该地址。
R=requests.get(url) #获取返回值
IP=JSON . loads(r . text)[ origin ]#取其中一个字段的值
打印(ip)
这个方法可以打印出公共IP,然后我们根据公共IP打印出当前的地理位置。
#发送获取请求
URL=f http://IP-API.com/JSON/{ IP }?字段=状态,消息,国家,国家代码,地区,地区名称,城市,邮政编码,纬度,经度,时区,isp,组织,as,querylang=zh-CN
fields字段定义为验收返回参数,可以省略;要设置lang的语言,zh-CN是中文,可以传输。
Res=requests.get(url) #发送请求
data=json.loads(res.text)
#
print(res.json(), end="\n")
print(data, end="\n")
结果显示如下:
61.52.131.62
{'status': 'success', 'country': '中国', 'countryCode': 'CN', 'region': 'HA', 'regionName': '河南', 'city': '郑州市', 'zip': '', 'lat': 34.7599, 'lon': 113.6459, 'timezone': 'Asia/Shanghai', 'isp': 'CNC Group CHINA169 Henan Province Network', 'org': '', 'as': 'AS4837 CHINA UNICOM China169 Backbone', 'query': '61.52.131.62'}
进程已结束,退出代码为 0
我们发现这里显示了所有获取到的信息,那么如何只显示我们需要的部分呢?我们接下来,将我们获取到的数据保存为json格式:
data = json.loads(res.text)with open(json.json,w,encoding=utf-8) as file:
file.write(json.dumps(data,indent=2,ensure_ascii=False))
结果如下:
接着我们就可以打开json文件并读取其中的某些特定的数据:
dataJson = json.load(open('json.json', encoding='UTF-8')) # 打开json文件,并将其中的数据全部读取
"country"], dataJson["regionName"], dataJson["city"]] # 读取json文件中我们需要的部分
print(jsojsondata = [dataJson[ndata)
读取结果如下:
125.41.175.176
['中国', '河南', '郑州市']进程已结束,退出代码为 0
完整代码:
import requestsimport json
url = "http://httpbin.org/ip" # 也可以直接在浏览器访问这个地址
r = requests.get(url) # 获取返回的值
ip = json.loads(r.text)["origin"] # 取其中某个字段的值
print(ip)
# 发送get请求
url = fhttp://ip-api.com/json/{ip}?fields=status,message,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,query&lang=zh-CN
# 其中fields字段为定义接受返回参数,可不传;lang为设置语言,zh-CN为中文,可以传
res = requests.get(url) # 发送请求
jsonobj = json.loads(res.text)
# print(res.json(), end="\n")
data = json.loads(res.text)
with open(json.json, w, encoding=utf-8) as file:
file.write(json.dumps(data, indent=2, ensure_ascii=False))
dataJson = json.load(open(json.json, encoding=UTF-8)) # 打开json文件,并将其中的数据全部读取
jsondata = [dataJson["country"], dataJson["regionName"], dataJson["city"]] # 读取json文件中我们需要的部分
print(jsondata)
到此这篇关于python实现获取当前设备的地点位置的文章就介绍到这了,更多相关python获取当前设备的地点位置内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。