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实现选择排序
Jun 04 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
Python Web编程之WSGI协议简介
Jul 18 Python
使用python进行拆分大文件的方法
Dec 10 Python
python的turtle库使用详解
May 10 Python
详解python编译器和解释器的区别
Jun 24 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
Django model update的多种用法介绍
Mar 28 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
浅谈python的elementtree模块处理中文注意事项
Mar 06 Python
Python如何转换字符串大小写
Jun 04 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
Nov 28 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
德生PL990的分析评价
2021/03/02 无线电
php分页示例代码
2007/03/19 PHP
调整PHP的性能
2013/10/30 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
Vue 实现前端权限控制的示例代码
2019/07/09 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
Python实现Linux中的du命令
2017/06/12 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
Python3 assert断言实现原理解析
2020/03/02 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
会议接待欢迎词
2014/01/12 职场文书
保证书范文大全
2014/04/28 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
学校运动会感想
2015/08/10 职场文书