Python--API编程:IP地址翻译成实际的物理地址

简介: Python--API编程:IP地址翻译成实际的物理地址

Web API经常被那些使用成熟的公开服务(public service)的开发者所使用。例如, ESPN提供了获取运动员信息,比赛分数等信息的 API。Google的开发者社区也提供了几十个API,用于语言翻译、分析、地理位置等信息。下面利用ip-api的api和淘宝ip地址库提供的api编写根据ip地址进行查询实际的物理地址。

运行环境
IDE: Pycharm2021

OS:macOS Ventura

Interpreter: Python3.9

示例代码
ip-api.com和淘宝IP地址库提供了一个简单易用的API, 它能将IP地址翻译成实际的物理地址。代码如下:

ip-api.com提供的API
import requests
import ssl
import re


ssl._create_default_https_context = ssl._create_unverified_context
headers = {
   
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Mobile Safari/537.36'
}

# 匹配 0.0.0.0-255.255.255.255的表达式
pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')

try:
    myip = input('请输入查询的ip: ')
    if pattern.fullmatch(myip):
        url = f'http://ip-api.com/json/{myip}'
        resp = requests.get(url, headers=headers)

        print('国家:', dict(resp.json())['country'])
        print('区域:', dict(resp.json())['regionName'])
        print('纬度:', dict(resp.json())['lat'])
        print('经度:', dict(resp.json())['lon'])
        print('时区:', dict(resp.json())['timezone'])
        print('运行商:', dict(resp.json())['isp'])

    else:
        print('格式不正确!')
except:
    print('内网IP')

运行结果如下图:

淘宝IP地址库提供的API,代码如下:

import requests
import re
url = 'https://ip.taobao.com/outGetIpInfo'
# 匹配 0.0.0.0-255.255.255.255的表达式
pattern = re.compile(r'(([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])')

try:
    myip = input('请输入查询的ip: ')
    if pattern.fullmatch(myip):
        data = {
   
            'ip': myip,
            'accessKey': 'alibaba-inc'
        }
        resp = requests.post(url=url, params=data)

        print('国家: ', re.search('"country":"(.*?)"', resp.text).group(1))
        print('区域:', re.search('"region":"(.*?)"', resp.text).group(1))
        print('城市: ', re.search('"city":"(.*?)"', resp.text).group(1))
    else:
        print('输入格式不正确')

except Exception as error:
    print(error)

运行结果如下图:

image.png

相关文章
|
9月前
|
机器学习/深度学习 存储 API
唯品会:利用订单地址API校验收货信息,降低因地址错误导致的退货率
在电商中,地址错误常导致退货率升高,影响用户体验与运营效率。唯品会通过集成订单地址API,在用户下单时实时校验收货信息,有效减少因地址问题引发的退货。本文解析该方案的工作原理与实际效益,展示其如何助力平台降低退货率、节约成本并提升用户满意度。
|
API
天气预报15日-墨迹天气-地址查询版免费API接口教程
该接口提供15日天气预报服务,通过指定地址获取墨迹天气预报。支持POST或GET请求,需提供用户ID、KEY、省份名称及地点等参数。返回数据包括15天内每天的天气详情,如最高最低温度、天气变化及图标等。示例中使用的ID和KEY为公共测试账号,建议使用个人账号以获得更高调用频率。
1291 0
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
API
获取网页重定向地址免费API接口教程
该API用于获取网页重定向跳转后的最终地址。请求地址为`https://cn.apihz.cn/api/wangzhan/tiaozhuan.php`,支持POST或GET方式。请求参数包括`id`、`key`和`url`,返回数据包含状态码`code`和最终URL`url`。示例返回:`{"code":200,"url":"https://www.baidu.com/"}`。
1090 29
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
779 6
|
API
天气预报1天-中国气象局-地址查询版免费API接口教程
此接口提供中国气象局官方的当日天气信息,支持POST和GET请求,需提供用户ID、KEY、省份及具体地点。返回数据包括状态码、消息、天气详情等。示例中使用的ID与KEY为公共测试用,建议使用个人ID与KEY以享受更高调用频次。
3449 9
|
API
天气预报-腾讯天气-7天-地址查询版免费API接口
这是一个免费的腾讯天气API接口,用于查询指定地址的7天天气预报。支持POST和GET请求方式。请求参数包括id、key、province、city、county等。返回参数包含日期、天气状况、温度等信息。 示例请求地址:https://cn.apihz.cn/api/tianqi/tengxun.php?id=88888888&key=88888888&province=四川省&city=绵阳市&county=。
1610 7
|
网络协议 Python
IP地址探秘:识别与解析的Python之旅 🚀
《IP地址探秘:识别与解析的Python之旅》通过Python的`ipaddress`模块,轻松实现IP地址的分类(如单播、多播、私有、环回或公有)及子网内所有IP的生成,使网络管理更加便捷高效。示例代码直观展示了功能实现过程。
321 1
|
存储 自然语言处理 API
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
基于 Python 的地址解析:自动识别姓名、电话、地址、详细地址与省市区
3685 1

推荐镜像

更多