python之获取指定IP的地理位置详解

获取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 urllib2
import json

ipaddr = 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地址所在地

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值