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检测lvs real server状态
Jan 22 Python
跟老齐学Python之做一个小游戏
Sep 28 Python
python创建关联数组(字典)的方法
May 04 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
Python2和Python3中urllib库中urlencode的使用注意事项
Nov 26 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
Feb 06 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 20 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判断密码强度的方法详解
2017/05/26 PHP
不能再简单的无闪刷新验证码原理很简单
2007/11/05 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python中无限循环需要什么条件
2020/05/27 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
房地产出纳岗位职责
2013/12/01 职场文书
大学生的网络创业计划书
2013/12/26 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
酒店开业主持词
2015/07/02 职场文书
旷工检讨书大全
2015/08/15 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS