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 13 Python
Python挑选文件夹里宽大于300图片的方法
Mar 05 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
python类中super()和__init__()的区别
Oct 18 Python
python使用tkinter实现简单计算器
Jan 30 Python
python中将zip压缩包转为gz.tar的方法
Oct 18 Python
python用plt画图时,cmp设置方法
Dec 13 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
Apr 29 Python
python实现视频分帧效果
May 31 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
PHP使用mysqli操作MySQL数据库的简单方法
2017/02/04 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
vue - props 声明数组和对象操作
2020/07/30 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
Jquery Fade用法详解
2020/11/06 jQuery
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python Celery定时任务的示例
2018/03/13 Python
python3中eval函数用法使用简介
2019/08/02 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
英语道歉信范文
2014/01/09 职场文书
人事专员岗位说明书
2014/07/29 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
入党政审材料范文
2014/12/24 职场文书
三年级学生期末评语
2014/12/26 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript