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连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
Python下载懒人图库JavaScript特效
May 28 Python
python基础教程之五种数据类型详解
Jan 12 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python版简单工厂模式
Oct 16 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
基于python实现删除指定文件类型
Jul 21 Python
Python同时处理多个异常的方法
Jul 28 Python
Django CBV模型源码运行流程详解
Aug 17 Python
用python对excel进行操作(读,写,修改)
Dec 25 Python
PyTorch device与cuda.device用法
Apr 03 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
NOT NULL 和NULL
2007/01/15 PHP
语义化 H1 标签
2008/01/14 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
2017/06/23 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
python实现爬虫下载美女图片
2015/07/14 Python
八大排序算法的Python实现
2021/01/28 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
python判断完全平方数的方法
2018/11/13 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
基于python实现操作git过程代码解析
2020/07/27 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
运动会入场词200字
2014/02/15 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
学生检讨书
2015/01/27 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL