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深入学习之对象的属性
Aug 31 Python
跟老齐学Python之使用Python操作数据库(1)
Nov 25 Python
在Python程序和Flask框架中使用SQLAlchemy的教程
Jun 06 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
详解python之协程gevent模块
Jun 14 Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
简单了解python协程的相关知识
Aug 31 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
smarty中常用方法实例总结
2015/08/07 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
关于可运行代码无法正常执行的使用说明
2010/05/13 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python制作mysql数据迁移脚本
2019/01/01 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python实现桌面气泡提示功能
2019/07/29 Python
Python新手学习装饰器
2020/06/04 Python
英国健身专家:WIT Fitness
2021/02/09 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
运动会解说词100字
2014/01/31 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
村党支部公开承诺书
2014/05/29 职场文书
职务任命书范本
2014/06/05 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
三年级学生期末评语
2014/12/26 职场文书
教师党员自我评价2015
2015/03/04 职场文书
家长反馈意见及建议
2015/06/03 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android