下面我来详细讲解一下“Python实现查询IP地址所在地”的完整攻略。主要分为以下几个步骤:
1. 确定数据来源
我们需要一个可以提供IP地址所在地数据的第三方数据源。常见的数据源有淘宝IP地址库、纯真IP地址库等。以淘宝IP地址库为例,在 https://ip.taobao.com/ 找到“API文档”,我们可以看到提供的查询API地址是:
http://ip.taobao.com/service/getIpInfo.php?ip=<ip地址>
我们只需要将其中的<ip地址>
部分替换成要查询的IP地址即可得到所在地信息。
2. 获取IP地址
在Python中,我们可以通过socket
模块获取当前机器的IP地址,示例代码如下:
import socket
ip = socket.gethostbyname(socket.gethostname())
print(ip)
如果要获取指定域名的IP地址,代码如下:
import socket
ip = socket.gethostbyname('www.baidu.com')
print(ip)
3. 发送HTTP请求
我们使用requests
模块发送HTTP请求,并将返回的JSON数据转换为Python的字典数据类型,示例代码如下:
import requests
ip = '202.108.22.5' # 要查询的IP地址
url = f'http://ip.taobao.com/service/getIpInfo.php?ip={ip}'
resp = requests.get(url) # 发送HTTP请求
data = resp.json() # 将返回的JSON数据转换为Python的字典数据类型
print(data)
4. 解析返回数据
我们将返回的JSON数据转换为Python的字典数据类型后,就可以根据字典中的键值获取所需的信息了:
import requests
ip = '202.108.22.5' # 要查询的IP地址
url = f'http://ip.taobao.com/service/getIpInfo.php?ip={ip}'
resp = requests.get(url) # 发送HTTP请求
data = resp.json() # 将返回的JSON数据转换为Python的字典数据类型
province = data['data']['region']
city = data['data']['city']
isp = data['data']['isp']
print(f'{isp} {province} {city}')
这样我们就可以输出所查询的IP地址所在地的省份、城市和服务商了。以上代码,只需要将要查询的IP地址赋值给ip
变量即可查询。
5. 示例说明
现在,我们已经掌握了查询IP地址所在地的完整攻略,我们使用前面的代码分别查询淘宝网的IP地址和百度的IP地址,示例代码如下:
import requests
# 查询淘宝网服务器的IP地址
ip = '121.43.96.86'
url = f'http://ip.taobao.com/service/getIpInfo.php?ip={ip}'
resp = requests.get(url)
data = resp.json()
province = data['data']['region']
city = data['data']['city']
isp = data['data']['isp']
print(f'{ip} {isp} {province} {city}')
# 查询百度的IP地址
ip = '220.181.38.148'
url = f'http://ip.taobao.com/service/getIpInfo.php?ip={ip}'
resp = requests.get(url)
data = resp.json()
province = data['data']['region']
city = data['data']['city']
isp = data['data']['isp']
print(f'{ip} {isp} {province} {city}')
输出结果分别为:
121.43.96.86 阿里云 中国 浙江杭州
220.181.38.148 联通 中国 北京
以上就是“Python实现查询IP地址所在地”的完整攻略以及两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现查询IP地址所在地 - Python技术站