ip 位置信息查询,支持管道、文件、命令行参数三种输入方式
发布时间:2020-12-17 17:14:09 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/env python#-*-coding:utf-8-*-""" 调用 淘宝 ip restful api 进行查询, 支持直接指定 ip 地址查询 , 也支持读取文件按行解析查询地址
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/env python #-*-coding:utf-8-*- """ 调用 淘宝 ip restful api 进行查询, 支持直接指定 ip 地址查询 , 也支持读取文件按行解析查询地址 同时支持从管道读取数据进行查询 """ import requests import argparse import sys URL = "http://ip.taobao.com/service/getIpInfo.php?ip=" def query_ip_info(ip): if not ip: print 'argument shoud not be none' return url = URL + str(ip) try: r = requests.get(url,timeout=5) except Exception as e: print e else: data = r.json() if data['code'] == 0: data = data['data'] print ip,data['country'],"/",data['area'],data['region'],data['city'],data['isp'] else: print "查询失败: ",ip,data['data'] def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("-a","--addr",help="输入单个 ip 地址进行查询") parser.add_argument("-f","--file",help="输入文件路径,从文件中按行进行解析读取数据") parser.add_argument("-p","--pipe",default=sys.stdin,const=sys.stdin,nargs="?",help="从管道中读取数据") args = parser.parse_args() if not any((args.addr,args.file,args.pipe)): parser.print_usage() sys.exit() elif args.addr: return ("addr",args.addr) elif args.file: return ("file",args.file) else: return ("pipe",sys.stdin) def run(): source,ips = parse_args() if source == "pipe": for ip in sys.stdin: query_ip_info(ip.strip()) elif source == "addr": query_ip_info(ips) elif source == "file": try: with open(ips,"r") as f: while True: ip = f.readline().strip() if not ip: break query_ip_info(ip) except Exception as e: print e else: print "unknown error" def test(): run() if __name__ == "__main__": test() 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读