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 自动安装 Rising 杀毒软件
Apr 24 Python
Python入门篇之编程习惯与特点
Oct 17 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
Jan 22 Python
Python实现多并发访问网站功能示例
Jun 19 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python操作gitlab API过程解析
Dec 27 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
Python 创建TCP服务器的方法
Jul 28 Python
Python中可变和不可变对象的深入讲解
Aug 02 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
php实现RSA加密类实例
2015/03/26 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
犀利的js 函数集合
2009/06/11 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[41:52]2018DOTA2亚洲邀请赛3月29日小组赛B组Effect VS Secret
2018/03/30 DOTA
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
小班下学期评语
2014/05/04 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
上党课的心得体会
2014/09/02 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
法人身份证明书
2014/10/08 职场文书
出国留学自荐信模板
2015/03/06 职场文书
赡养老人协议书范本
2015/08/06 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL