Python查询IP地址归属完整代码
作者:myway_liang 发布时间:2022-10-18 16:39:07
标签:Python,IP
本文实例为大家分享了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


猜你喜欢
- 重装系统永远是个好办法,但有谁喜欢这么做呀:( 后来无意发现是卸载的时候没有卸载完全导致,下面给出完整的卸载MySQL 5.1的卸载方法:
- 1.CephFS文件存储核心概念1.1.CephFS文件存储简介官方文档:docs.ceph.com/en/pacific/&hel
- 一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方。下面是slice的简介:# slice 两种用法c
- 本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下:在php中要随机取mysql记录我们可以直接使用mysql
- 一 导言设计一个好的用户系统往往不是那么容易,Django提供的用户系统可以快速实现基本的功能,并可以在此基础上继续扩展以满足我们的需求。先
- 一、基础内容安装第三方库的时候安装:python-docxfrom docx import DocumentPt - 像素、Cm - 厘米、
- Requests具有完备的中英文文档, 能完全满足当前网络的需求, 它使用了urllib3, 拥有其所有的特性!最近在学python自动化,
- 方法1 自带pytorch自带方法,计算模型参数总量total = sum([param.nelement() for param in m
- 一、文件内容的分发 应用场景:分批读取共有358086行内容的txt文件,每取1000条输出到一个文件当中# coding=utf-8# 分
- (&,|)和(and,or)是两组比较相似的运算符,用在“与”/ “或”上,在用法上有些许区别。 (&,|)和(and,or
- 数据增强的必要性深度学习在最近十年得以风靡得益于计算机算力的提高以及数据资源获取的难度下降。一个好的深度模型往往需要大量具有label的数据
- 在python中,有很多用于生成基于JS的百度开源的数据可视化图表 Echarts 的类库。设置的图样都非常漂亮,小编之前研究过很多图示,用
- asp之日期和时间函数示例可以使用日期和时间函数来得到各种格式的日期和时间函数语法说明示例NowNow()取得系统当前的日期和
- 本文实例为大家分享了python实现双链表的具体代码,供大家参考,具体内容如下实现双链表需要注意的地方1、如何插入元素,考虑特殊情况:头节点
- 最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资
- 配置连接数据库DATABASES = { 'default': { 'ENGI
- 后台管理配置动态路由菜单前段时间做一个后台管理项目,因为超级管理员可以给普通管理员动态更改权限,所以vue-element-admin里的写
- 在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。本文将一些都知
- 学习目的 学会SQL中的占位符用法 在鲸鱼这几天忙死了,好几天没写了,真对不起各位。这几天让XHTML闹得不开心,虽然以前也知道这个,但没太
- 许可和分发权限Access 2003 Developer Extensions随附的许可协议简化了解决方案或代码段的分发过程。这些协议包括免