Python查询IP地址归属完整代码


Posted in Python onJune 21, 2017

本文实例为大家分享了Python查询IP地址归属的具体代码,供大家参考,具体内容如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#查找IP地址归属地
#writer by keery_log
#Create time:2013-10-30
#Last update:2013-10-30
#用法: python chk_ip.py www.google.com |python chk_ip.py 8.8.8.8 |python chk_ip.py ip.txt
 
import signal
import urllib
import json
import sys,os,re
import socket
 
if len(sys.argv) <= 1 :
  print "Please input ip address !"
  sys.exit(0)
 
def handler(signum, frame):
  sys.exit(0)
signal.signal(signal.SIGINT, handler)
 
url = "http://ip.taobao.com/service/getIpInfo.php?ip="
 
#查找IP地址
def ip_location(ip):
  data = urllib.urlopen(url + ip).read()
  datadict=json.loads(data)
 
  for oneinfo in datadict:
    if "code" == oneinfo:
      if datadict[oneinfo] == 0:
        return datadict["data"]["country"] + datadict["data"]["region"] + datadict["data"]["city"] + datadict["data"]["isp"]
 
#定义IP与域名正则
re_ipaddress = re.compile(r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')
re_domain = re.compile(r'[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?')
 
if os.path.isfile(sys.argv[1]): #如果参数是文件,迭代查找
  file_path = sys.argv[1]
  fh = open(file_path,'r')
  for line in fh.readlines():
    if re_ipaddress.match(line):
      city_address = ip_location(line)
      print line.strip() + ":" + city_address
else:
  ip_address = sys.argv[1]
  if re_ipaddress.match(ip_address): #如果参数是单个IP地址
    city_address = ip_location(ip_address)
    print ip_address + ":" + city_address
  elif(re_domain.match(ip_address)): #如果参数是域名
    result = socket.getaddrinfo(ip_address, None)
    ip_address = result[0][4][0]
    city_address = ip_location(ip_address)
    print ip_address.strip() + ":" + city_address

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现二分查找算法实例
May 26 Python
python算法演练_One Rule 算法(详解)
May 17 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
matplotlib中legend位置调整解析
Dec 19 Python
python利用openpyxl拆分多个工作表的工作簿的方法
Sep 27 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
python打印异常信息的两种实现方式
Dec 24 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
Python urlopen()参数代码示例解析
Dec 10 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 Python
Python批量查询域名是否被注册过
Jun 21 #Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 #Python
Python编程实战之Oracle数据库操作示例
Jun 21 #Python
Python获取SQLite查询结果表列名的方法
Jun 21 #Python
基于hashlib模块--加密(详解)
Jun 21 #Python
详谈Python基础之内置函数和递归
Jun 21 #Python
浅谈python内置变量-reversed(seq)
Jun 21 #Python
You might like
Home Coffee Roasting
2021/03/03 咖啡文化
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP 强制下载文件代码
2010/10/24 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
vue如何判断dom的class
2018/04/26 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
js中值引用和地址引用实例分析
2019/06/21 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
英语专业毕业生自荐信范文
2013/12/31 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
网络管理专业求职信
2014/03/15 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
科技节口号
2014/06/19 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2015年八一建军节演讲稿
2015/03/19 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
Android Studio 计算器开发
2022/05/20 Java/Android
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android