笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册
查看: 4960|回复: 0

使用Python获取IP地址的位置信息

[复制链接]

新手上路

Rank: 1

积分
6
发表于 2022-3-9 09:16:53 | 显示全部楼层 |阅读模式
介绍
我们经常需要知道IP地址的位置,甚至可能是我们的IP地址。另一个用例是当您要向网站的用户发送登录信息时。在这篇博客中,我们将看到如何使用Python知道IP地址的位置。
准备好您的工具
为了实现该目标,我们将使用下面提到的两个 API:
  • ipify:此 API 将帮助我们了解请求来自何处的 IP 地址。
  • ipapi:此 API 将帮助我们获取特定 IP 地址的位置信息。
为了与这些API进行交互,我们将在Python中使用库。如果您不熟悉 API,请务必查看本教程以了解它们。requests
您可以使用如下命令安装此库:pip
$ pip install requests


一旦安装了库,我们就可以开始了!
获取位置信息
正如我们所讨论的,我们将首先从第一个 API 获取我们的 IP 地址。然后,我们将使用此 IP 地址来获取此特定 IP 地址的位置信息。因此,我们将有两个函数。
  1. import requests

  2. def get_ip():
  3.     response = requests.get('https://api64.ipify.org?format=json').json()
  4.     return response["ip"]

  5. def get_location():
  6.     ip_address = get_ip()
  7.     response = requests.get(f'https://ipapi.co/{ip_address}/json/').json()
  8.     location_data = {
  9.         "ip": ip_address,
  10.         "city": response.get("city"),
  11.         "region": response.get("region"),
  12.         "country": response.get("country_name")
  13.     }
  14.     return location_data

  15. print(get_location())
复制代码
在上面的代码中,我们有两个函数 - 和 .让我们分别讨论它们中的每一个。get_ip()get_location()
get_ip() 函数
根据 ipify 的 API 文档,我们需要在 https://api.ipify.org?format=json 上发出 GET 请求,以获得如下所示的 JSON 响应:
  1. {
  2.   "ip": "117.214.109.137"
  3. }
复制代码
我们将此响应存储在响应变量中,该变量只不过是一种具有一个键值对的Python字典。因此,我们将键的值返回为 。ipresponse["ip"]
get_location() 函数
根据ipapi的API文档,我们需要在 https://ipapi.co/{ip}/{format}/上发出GET请求,以获取特定IP地址的位置信息。 替换为 IP 地址,并且可以替换为以下任何地址 - 、 、 、 、 。此函数在内部调用该函数以获取 IP 地址,然后在具有 IP 地址的 URL 上发出 GET 请求。此 API 返回如下所示的 JSON 响应:{ip}{format}jsonjsonpxmlcsvyamlget_ip()
  1. {
  2. "ip": "117.214.109.137",
  3. "version": "IPv4",
  4. "city": "Gaya",
  5. "region": "Bihar",
  6. "region_code": "BR",
  7. "country": "IN",
  8. "country_name": "India",
  9. "country_code": "IN",
  10. "country_code_iso3": "IND",
  11. "country_capital": "New Delhi",
  12. "country_tld": ".in",
  13. "continent_code": "AS",
  14. "in_eu": false,
  15. "postal": "823002",
  16. "latitude": 24.7935,
  17. "longitude": 85.012,
  18. "timezone": "Asia/Kolkata",
  19. "utc_offset": "+0530",
  20. "country_calling_code": "+91",
  21. "currency": "INR",
  22. "currency_name": "Rupee",
  23. "languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
  24. "country_area": 3287590,
  25. "country_population": 1352617328,
  26. "asn": "AS9829",
  27. "org": "National Internet Backbone"
  28. }
复制代码
我们在响应中获得了大量数据。您可以使用任何适合您的方法。在本教程中,我们将只使用 和/地区。这就是为什么我们创建了一个名为location_data的字典,并将所有数据存储在其中并返回相同的数据。cityregion

最后,我们调用该函数并打印输出。我们的输出将如下所示:get_location()
  1. {
  2.   "ip": "117.214.109.137",
  3.   "city": "Gaya",
  4.   "region": "Bihar",
  5.   "country": "India"
  6. }
复制代码
结论
在这篇博客中,我们学习了如何与 Web 服务交互以获取特定 IP 地址的位置信息

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-4 16:22 , Processed in 0.016287 second(s), 18 queries .

© 2001-2020

快速回复 返回顶部 返回列表