加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读