python实现查询IP地址所在地
admin
2023-07-31 02:16:28
0

使方法一、用IP138数据库查询域名或IP地址对应的地理位置。

#-*- coding:gbk -*-
import urllib2
import re
 
try:
 while True:
  ipaddr = raw_input(\"Enter IP Or Domain Name:\")
  if ipaddr == \"\" or ipaddr == \'exit\':
   break
  else:
   url = \"http://www.ip138.com/ips138.asp?ip=%s&action=2\" % ipaddr
   u = urllib2.urlopen(url)
   s = u.read()
   #Get IP Address
   ip = re.findall(r\'\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\',s)
   print \"\\n****** Below Result From IP138 Database *****\"
   print \"IP Address:\",ip[0]
   #Get IP Address Location
   result = re.findall(r\'(
  • .*?
  • )\',s) for i in result: print i[4:-5] print \"*\"*45 print \"\\n\" except: print \"Not Data Find\"

    方法二、本来想调用阿里的ip接口查询ip归属地。结果发现阿里的接口非常不给力,主要是不准确,不过是免费的且有地区和ISP的信息。以下是实现代码

    # -*- coding: utf-8 -*-
    import requests
     
    def checkip(ip):
     
      URL = \'http://ip.taobao.com/service/getIpInfo.php\'
      try:
        r = requests.get(URL, params=ip, timeout=3)
      except requests.RequestException as e:
        print(e)
      else:
        json_data = r.json()
        if json_data[u\'code\'] == 0:
          print \'所在国家: \' + json_data[u\'data\'][u\'country\'].encode(\'utf-8\')
          print \'所在地区: \' + json_data[u\'data\'][u\'area\'].encode(\'utf-8\')
          print \'所在省份: \' + json_data[u\'data\'][u\'region\'].encode(\'utf-8\')
          print \'所在城市: \' + json_data[u\'data\'][u\'city\'].encode(\'utf-8\')
          print \'所属运营商:\' + json_data[u\'data\'][u\'isp\'].encode(\'utf-8\')
        else:
          print \'查询失败,请稍后再试!\'
     
    ip={\'ip\': \'202.102.193.68\'}
    checkip(ip)

    但是多次查询发现ip归属地不准确,于是使用17mon的ip查询接口。但是17mon分付费和免费的库接口,我用的免费的测试,接口返回的字段有限,只有国家、省份、城市。代码如下

    # -*- coding: utf-8 -*-
    import requests
     
    def lookup(ip):
     
      URL = \'http://freeipapi.17mon.cn/\' + ip
      try:
        r = requests.get(URL, timeout=3)
      except requests.RequestException as e:
        print(e)
     
      json_data = r.json()
      print \'所在国家:\' + json_data[0].encode(\'utf-8\')
      print \'所在省份:\' + json_data[1].encode(\'utf-8\')
      print \'所在城市:\' + json_data[2].encode(\'utf-8\')
      return(ip)
     
    ip=\'202.104.15.102\'
    lookup(ip)

    测试也不错,公司要使用还是选择购买付费的库查询接口吧。
    本文部分出自 “老徐的私房菜” 博客,转载请与作者联系!

    以上所述就是本文的全部内容了希望大家能够喜欢。

    相关内容

    热门资讯

    Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
    定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
    scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
    500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
    小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
    pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
    微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
    65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
    Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
    项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...