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上传文件和字符到PHP服务器
Nov 24 Python
python实现二叉树的遍历
Dec 11 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
python中的数据结构比较
May 13 Python
python找出因数与质因数的方法
Jul 25 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python爬虫爬取有道实现翻译功能
Nov 27 Python
Python 实现集合Set的示例
Dec 21 Python
Golang Web 框架Iris安装部署
Aug 14 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
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
php生成zip文件类实例
2015/04/07 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
从零学Python之入门(四)运算
2014/05/27 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
css3实现蒙版弹幕功能
2019/06/18 HTML / CSS
html5实现多文件的上传示例代码
2014/02/13 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
运动会100米解说词
2014/01/23 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
JavaScript流程控制(循环)
2021/12/06 Javascript