python实现查询IP地址所在地


Posted in Python onMarch 29, 2015

使方法一、用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'(<li>.*?</li>)',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)

python实现查询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)

python实现查询IP地址所在地

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

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

Python 相关文章推荐
Python采集腾讯新闻实例
Jul 10 Python
python实现基本进制转换的方法
Jul 11 Python
Python基于百度AI的文字识别的示例
Apr 21 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
python绘制漏斗图步骤详解
Mar 04 Python
简单了解Django ContentType内置组件
Jul 23 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
Python PyQt5整理介绍
Apr 01 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
python实现双向链表原理
May 25 Python
python实现定时播放mp3
Mar 29 #Python
Python实现设置windows桌面壁纸代码分享
Mar 28 #Python
Python中的类与对象之描述符详解
Mar 27 #Python
深入理解Javascript中的this关键字
Mar 27 #Python
Python运用于数据分析的简单教程
Mar 27 #Python
Python中下划线的使用方法
Mar 27 #Python
利用Python和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 #Python
You might like
php tp验证表单与自动填充函数代码
2012/02/22 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
跟老齐学Python之集合(set)
2014/09/24 Python
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
python实现备份目录的方法
2015/08/03 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
绿化先进工作者事迹材料
2014/01/30 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
高三家长寄语
2014/04/03 职场文书
志愿者活动总结报告
2014/06/27 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
Django使用echarts进行可视化展示的实践
2021/06/10 Python
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL