首页 > 编程知识 正文

python获取局域网中的ip和mac地址,根据ip获取地理位置

时间:2023-05-06 07:30:11 阅读:272900 作者:331

获取ip地理位置的API接口

本来是想通过这个案例练习下正则表达式的,后来才发现有更简单的方法, 当然是网上有很多API接口, 直接可以返回json格式的数据, 通过处理, easy搞定……

根据IP查询所在地、运营商等信息的一些API如下:
1. 淘宝的API(推荐):http://ip.taobao.com/service/getIpInfo.php?ip=110.84.0.129
2. 国外freegeoip.net(推荐):http://freegeoip.net/json/110.84.0.129 这个还提供了经纬度信息(但不一定准)
3. 新浪的API:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=110.84.0.129
4. 腾讯的网页查询(返回的非json格式): http://ip.qq.com/cgi-bin/searchip?searchip1=110.84.0.129
5. ip.cn的网页(返回的非json格式):http://www.ip.cn/index.php?ip=110.84.0.129
6. ip-api.com: http://ip-api.com/json/110.84.0.129

上述的API接口,大多有一个特点是, 返回的直接是个json格式;

案例代码

此处以freegeoip.net的API为例,编写代码如下:

优势:
可以查看经纬度;缺点:
不能定位到省份,建议需要省份的使用其他API; #!/usr/bin/env pyhton# coding:utf-8"""@Name: re_01_ip_location.py@Author: lvah@Date:1/11/18@Connect: xc_guofan@163.com@Desc: 根据API查询IP的地理位置"""import urllib2import jsonipaddr = raw_input("查询的IP:")# 组成查询ip地理位置的网址;url = 'http://freegeoip.net/json/%s' % (ipaddr)# 访问url地址, urlobject是<type 'instance'>对象;urlobject = urllib2.urlopen(url)# url地址访问后的返回值;urlcontent类型为字符串;# urlcontent = '{# "ip":"172.25.254.250","country_code":"","country_name":"",# "region_code":"","region_name":"","city":"","zip_code":"",# "time_zone":"","latitude":0,"longitude":0,"metro_code":0# }'# latitude: 纬度# longitude: 经度urlcontent = urlobject.read()# 很明显字符串的信息不好处理的, 那么json模块可以帮忙的;res = json.loads(urlcontent)# print res# 显示查询结果print """ 查询结果如下: IP: {} 时区: {} 所在国家: {} 所在经度: {} 所在纬度: {}""".format(res['ip'], res['time_zone'], res['country_name'], res['latitude'], res['longitude']) 执行结果如下: 查询的IP:123.1.2.3 查询结果如下: IP: 123.1.2.3 时区: Asia/Tokyo 所在国家: Japan 所在经度: 35.1802 所在纬度: 136.9067

参考的博客链接:python 开发中根据IP查地理位置信息方法教程
参考的博客链接(测试后不可用,但提供了思路):python实现查询IP地址所在地

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。