Engee 文档
Notebook

从公共应用程序接口 OpenWeatherMap 获取数据

本示例介绍从 OpenWeatherMap 天气服务的公共 API 获取数据的过程。 公开数据源的 API - OpenWeatherMap 天气服务。

简介

OpenWeatherMap使用付费 API(免费访问功能有限)提供当前天气数据、预报以及云、风、气压和降水等天气现象的地图。 所有天气数据都可以JSON、XML 或 HTML格式检索。 在本示例中,我们将使用免费访问服务来演示此类工作的能力和工具。

入门

使用 Julia API 可以使用 HTTP.jl 包,该包提供了发送 HTTP 请求和处理响应的便捷函数。 HTTP 请求和处理响应。

首先,让我们安装 HTTP.jl 和 JSON3.jl 库,以便处理 JSON 数据:

In [ ]:
import Pkg; Pkg.add(["HTTP", "JSON3"]);

发送 GET 请求

现在让我们编写代码,向 OpenWeatherMap API 发送 GET 请求:

要使程序正常运行,您需要在api_key 变量中指定访问服务的 API 令牌。

In [ ]:
using HTTP, JSON3

# Ваш API ключ от OpenWeatherMap
api_key = "введите Ваш API токен";

# Интересующий город
city = "Moscow,ru";

# URL для запроса
url = "http://api.openweathermap.org/data/2.5/weather?q=$city&APPID=$api_key&units=metric";

# Отправка GET-запроса
response = HTTP.get(url);

在这里,我们使用HTTP.get(url) 向 API 发送 GET 请求。

读取收到的数据

现在我们检查响应的状态:如果状态为 200,则请求成功。 接下来,我们使用JSON3.read(response.body) 函数解析 JSON 响应。 这样,我们就能从接收到的数据中提取并输出天气信息。

In [ ]:
# Проверка статуса ответа
if response.status == 200
    # Парсинг JSON-ответа
    data = JSON3.read(response.body)

    # Извлечение и вывод информации о погоде
    println("Сегодня:           $(Date(now()))")
    println("Погода в городе    $(data.name):")
    println("Температура:       $(data.main.temp)°C")
    println("Влажность:         $(data.main.humidity)%")
    println("Описание:          $(data.weather[1].description)")
else
    println("Ошибка при запросе: статус $(response.status)")
end
Сегодня:           2025-02-05
Погода в городе    Moscow:
Температура:       -1.32°C
Влажность:         67%
Описание:          overcast clouds

接下来,我们打印整个接收到的JSON3 对象:

In [ ]:
println("$data")
{
        "coord": {
                    "lon": 37.6156,
                    "lat": 55.7522
                 },
      "weather": [
                   {
                               "id": 804,
                             "main": "Clouds",
                      "description": "overcast clouds",
                             "icon": "04d"
                   }
                 ],
         "base": "stations",
         "main": {
                          "temp": -1.32,
                    "feels_like": -6.76,
                      "temp_min": -2.76,
                      "temp_max": -1.3,
                      "pressure": 1032,
                      "humidity": 67,
                     "sea_level": 1032,
                    "grnd_level": 1011
                 },
   "visibility": 10000,
         "wind": {
                    "speed": 5.32,
                      "deg": 54,
                     "gust": 10.33
                 },
       "clouds": {
                    "all": 92
                 },
           "dt": 1738739674,
          "sys": {
                       "type": 2,
                         "id": 2095214,
                    "country": "RU",
                    "sunrise": 1738732545,
                     "sunset": 1738764680
                 },
     "timezone": 10800,
           "id": 524901,
         "name": "Moscow",
          "cod": 200
}

这些数据可在免费访问 OpenWeatherMap 服务的范围内使用。

结论

这是一个在 Engee 中使用 API 从开放源检索数据的基本示例。 检索数据的基本示例。您可能需要调整代码,以处理不同的 API、 您可能需要调整代码,以处理不同类型的 类型的请求和响应。