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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
python之import机制详解
Jul 03 Python
Python3基础之list列表实例解析
Aug 13 Python
Python中的包和模块实例
Nov 22 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
python中split方法用法分析
Apr 17 Python
Python lambda表达式用法实例分析
Dec 25 Python
python游戏地图最短路径求解
Jan 16 Python
Python基础之文件读取的讲解
Feb 16 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
Python利用逻辑回归分类实现模板
Feb 15 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
php一个文件搞定微信jssdk配置
2016/12/12 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
php实现图片压缩处理
2020/09/09 PHP
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
xml转json的js代码
2012/08/28 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
js实现盒子滚动动画效果
2020/08/09 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
市场营销毕业生自荐信范文
2014/04/01 职场文书
2014年教育工作总结
2014/11/26 职场文书
承诺书范本
2015/01/21 职场文书
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS