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中的变量默认是什么类型
Sep 11 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
python3连接MySQL数据库实例详解
May 24 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
python如何把字符串类型list转换成list
Feb 18 Python
Python基于numpy模块实现回归预测
May 14 Python
python中sklearn的pipeline模块实例详解
May 21 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
Python 处理日期时间的Arrow库使用
Aug 18 Python
Python - 10行代码集2000张美女图
May 23 Python
Python读写yaml文件
Mar 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
php设计模式 State (状态模式)
2011/06/26 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Javascript实现的分页函数
2006/12/22 Javascript
什么是JavaScript
2009/08/13 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
进一步探究Python中的正则表达式
2015/04/28 Python
python实现统计代码行数的方法
2015/05/22 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python mysql中in参数化说明
2020/06/05 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
简历里的自我评价
2014/01/31 职场文书
服装设计师求职信
2014/06/04 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
个人德育工作总结
2015/03/05 职场文书
2015年副班长工作总结
2015/05/15 职场文书
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android