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 for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
python读取和保存图片5种方法对比
Sep 12 Python
python flask安装和命令详解
Apr 02 Python
Python微信操控itchat的方法
May 31 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
Python模拟键盘输入自动登录TGP
Nov 27 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
Nov 28 Python
python palywright库基本使用
Jan 21 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
谈谈JavaScript中function多重理解
2015/08/28 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
2020/03/23 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
django教程如何自学
2020/07/31 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
助人为乐表扬信范文
2014/01/14 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
超市理货员岗位职责
2014/07/04 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
Python字符串常规操作小结
2022/04/03 Python