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 05 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
Python----数据预处理代码实例
Mar 20 Python
python3利用Socket实现通信的方法示例
May 06 Python
Python发展简史 Python来历
May 14 Python
pandas-resample按时间聚合实例
Dec 27 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
python怎么判断素数
Jul 01 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
Python深度学习之Pytorch初步使用
May 20 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
VUE 解决mode为history页面为空白的问题
2019/11/01 Javascript
matplotlib设置legend图例代码示例
2017/12/19 Python
python pyheatmap包绘制热力图
2018/11/09 Python
python爬取网易云音乐评论
2018/11/16 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
项目总经理岗位职责
2014/02/14 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
先进党支部申报材料
2014/12/24 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Python利用capstone实现反汇编
2022/04/06 Python