Python查询IP地址归属完整代码
本文实例为大家分享了Python查询IP地址归属的具体代码,供大家参考,具体内容如下
#!/usr/bin/envpython
#-*-coding:utf-8-*-
#查找IP地址归属地
#writerbykeery_log
#Createtime:2013-10-30
#Lastupdate:2013-10-30
#用法:pythonchk_ip.pywww.google.com|pythonchk_ip.py8.8.8.8|pythonchk_ip.pyip.txt
importsignal
importurllib
importjson
importsys,os,re
importsocket
iflen(sys.argv)<=1:
print"Pleaseinputipaddress!"
sys.exit(0)
defhandler(signum,frame):
sys.exit(0)
signal.signal(signal.SIGINT,handler)
url="http://ip.taobao.com/service/getIpInfo.php?ip="
#查找IP地址
defip_location(ip):
data=urllib.urlopen(url+ip).read()
datadict=json.loads(data)
foroneinfoindatadict:
if"code"==oneinfo:
ifdatadict[oneinfo]==0:
returndatadict["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})+\.?')
ifos.path.isfile(sys.argv[1]):#如果参数是文件,迭代查找
file_path=sys.argv[1]
fh=open(file_path,'r')
forlineinfh.readlines():
ifre_ipaddress.match(line):
city_address=ip_location(line)
printline.strip()+":"+city_address
else:
ip_address=sys.argv[1]
ifre_ipaddress.match(ip_address):#如果参数是单个IP地址
city_address=ip_location(ip_address)
printip_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)
printip_address.strip()+":"+city_address
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。