1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #查找IP地址归属地
  4. #writer by keery_log
  5. #Create time:2013-10-30
  6. #Last update:2013-10-30
  7. #用法: python chk_ip.py www.google.com |python chk_ip.py 8.8.8.8 |python chk_ip.py ip.txt
  8.  
  9. import signal
  10. import urllib
  11. import json
  12. import sys,os,re
  13. import socket
  14.  
  15. if len(sys.argv) <= 1 :
  16. print "Please input ip address !"
  17. sys.exit(0)
  18.  
  19. def handler(signum, frame):
  20. sys.exit(0)
  21. signal.signal(signal.SIGINT, handler)
  22.  
  23. url = "http://ip.taobao.com/service/getIpInfo.php?ip="
  24.  
  25. #查找IP地址
  26. def ip_location(ip):
  27. data = urllib.urlopen(url + ip).read()
  28. datadict=json.loads(data)
  29.  
  30. for oneinfo in datadict:
  31. if "code" == oneinfo:
  32. if datadict[oneinfo] == 0:
  33. return datadict["data"]["country"] + datadict["data"]["region"] + datadict["data"]["city"] + datadict["data"]["isp"]
  34.  
  35. #定义IP与域名正则
  36. 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]?)$')
  37. 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})+\.?')
  38.  
  39. if os.path.isfile(sys.argv[1]): #如果参数是文件,迭代查找
  40. file_path = sys.argv[1]
  41. fh = open(file_path,'r')
  42. for line in fh.readlines():
  43. if re_ipaddress.match(line):
  44. city_address = ip_location(line)
  45. print line.strip() + ":" + city_address
  46. else:
  47. ip_address = sys.argv[1]
  48. if re_ipaddress.match(ip_address): #如果参数是单个IP地址
  49. city_address = ip_location(ip_address)
  50. print ip_address + ":" + city_address
  51. elif(re_domain.match(ip_address)): #如果参数是域名
  52. result = socket.getaddrinfo(ip_address, None)
  53. ip_address = result[0][4][0]
  54. city_address = ip_location(ip_address)
  55. print ip_address.strip() + ":" + city_address

 

python 查找IP地址归属地的更多相关文章

  1. python查询IP地址所属地

    1.linux命令行版 #!/usr/bin/python #-*- coding: utf-8 -*- import json import urllib import sys def get_da ...

  2. Python实现IP地址归属地查询

    一.使用淘宝IP地址库查询 使用淘宝的Rest API,可以快速查询IP地址的归属地: 图00-淘宝IP地址库RestAPI使用说明 图01-使用淘宝免费IP地址库-查询IP归属地 存在问题:淘宝的免 ...

  3. python实现IP地址转换为32位二进制

    python实现IP地址转换为32位二进制 #!/usr/bin/env python # -*- coding:utf-8 -*- class IpAddrConverter(object): de ...

  4. python对ip地址排序、对列表进行去重

    一:使用python对ip地址排序所用代码示例一: import socket iplist = ['10.5.11.1','192.168.1.33','10.5.2.4','10.5.1.3',' ...

  5. Linux下Python获取IP地址

    <lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...

  6. python模块--ip地址转换为整数

    python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import ...

  7. python检查IP地址正确性

    一.自动动手,丰衣足食 #encoding=utf-8 import os,sys def check_ip(ipaddr): addr = ipaddr.strip().split('.') #切割 ...

  8. 使用python解析ip地址

    前言 想要批量将ip地址转换为省份城市.国家或是经纬度?百度上的批量查找每次的容量太小满足不了要求?第三方库神器 - geoip2帮你解决所有烦恼. 准备工作 首先安装一下geoip2库, pip i ...

  9. Python 输入IP地址及掩码告诉你该网段包含的全部地址(IPy模块练习)

    IPy模块原本使用时需要输入正确的网络位和掩码,我利用处理报错的机制实现了输入任意IP地址和掩码均可正确输出结果的小程序. #!/usr/bin/env python # -*- coding: ut ...

随机推荐

  1. github/gitlab ssh-keys全局唯一

    我们知道,通过在gitlab.github上设置ssh-key,可以直接拉取代码:git clone …… 公司为了代码安全,会对代码访问权限进行控制,不同人有不同代码的访问权限. 有时候,为了临时获 ...

  2. C语言里字符串的解析

      根据给定的字符串,按照一定规则解析字符串,卡住好几次,这次做个笔记,以供参考 函数名称:   strtok 函数原型:   char *strtok(char *s1, const char *s ...

  3. OSI七层模型详解(转)

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  4. HDU 1242 rescue (优先队列模板题)

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  5. salt.states.file试用

    从master往linux上的minion复制文件参考http://netkiller.sourceforge.net/linux/management/saltstack.html后半部分,他已经写 ...

  6. IOS 获取设备本地音视频

    1.检索音视频 PHFetchOptions *allPhotosOptions; @property (nonatomic, strong) PHFetchResult *assetsFetchRe ...

  7. 《写给大忙人看的java》笔记--基本的编程结构

    1.字符串是UTF-16编码中的Unicode编码点的序列 2.绑定System.in的Scanner可以读取终端输入: Scanner sc = new Scanner(System.in); 3. ...

  8. 记一次OGG数据写入HBase的丢失数据原因分析

    一.现象二.原因排查2.1 SparkStreaming程序排查2.2 Kafka数据验证2.3 查看OGG源码2.3.1 生成Kafka消息类2.3.2 Kafka配置类2.3.3 Kafka 消息 ...

  9. bash shell最基本的语法

    1 shell语句的基本构成 shell每个基本的构成元素之间都相隔一个空格. 比如[ -e file ],[.-e.file.]这四个基本元素之间都相隔了一个空格. 同样的道理[ ! -e file ...

  10. window10 java 环境变量配置

    JAVA_HOME (可有可无) CLASSPATH  :   C:\Program Files\Java\jdk1.8.0_91\lib\dt.jar;C:\Program Files\Java\j ...