一:本文目的

通过本脚本可实现ip归属地的查询。


二:运行方式

sun@ubuntu# python3.8 ip2.py  123.149.77.179


三:脚本亮点

1.通过变量的方式传递ip到函数里,而不是在脚本里写死固定的ip,使脚本使用起来更加灵活。

2.从字典里获取想要的值再拼接成字典,使代码更加优雅。


四:脚本细节

#coding:utf-8

import requests
import sys

ip_address = sys.argv[1]
# print(ip_address)

def get_ip_location(ip_address):
    api_url = f"http://ip-api.com/json/{ip_address}"

    try:
        response = requests.get(api_url)
        response.raise_for_status()  
        data = response.json()
        #print(data,type(data))  #{'status': 'success', 'country': 'China', 'countryCode': 'CN', 'region': 'HA', 'regionName': 'Henan', 'city': 'Zhengzhou', 'zip': '450000', 'lat': 34.7657, 'lon': 113.753, 'timezone': 'Asia/Shanghai', 'isp': 'Chinanet', 'org': 'Chinanet HA', 'as': 'AS4134 CHINANET-BACKBONE', 'query': '123.149.77.179'} <class 'dict'>


        location = {
            'country': data.get('country'),
            'region': data.get('regionName'),
            'city': data.get('city'),

        }
        return location

    except requests.exceptions.RequestException as e:
        print(f"Error occurred: {e}")
        return None


# 使用函数并打印结果
location = get_ip_location(ip_address)
# print(location,type(location))  #{'country': 'China', 'region': 'Henan', 'city': 'Zhengzhou'} <class 'dict'>
if location:
    print(f"IP: {ip_address}")
    print(f"国家: {location['country']}")
    print(f"地区: {location['region']}")
    print(f"城市: {location['city']}")
else:
    print("Failed to get location.")

运行效果:

【python实用脚本】查询ip归属地_json