как узнать погоду python

python-weather 0.3.6

pip install python-weather Copy PIP instructions

Released: Jul 26, 2021

A free and asynchronous Weather API Wrapper.

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT License (MIT)

Tags Weather, API, Weather API, API Wrapper, Weather CLI, CLI

Requires: Python >=3.7

Maintainers

Classifiers

Project description

python-weather

A free and asynchronous weather API wrapper made in python.

Library Example

Use example.py for a quick run 😉

Weather CLI

This package also contains a simple weather CLI for it. To get all usage and supported flags, run:

Project details

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT License (MIT)

Tags Weather, API, Weather API, API Wrapper, Weather CLI, CLI

Requires: Python >=3.7

Maintainers

Classifiers

как узнать погоду python. blue cube.e6165d35. как узнать погоду python фото. как узнать погоду python-blue cube.e6165d35. картинка как узнать погоду python. картинка blue cube.e6165d35.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

как узнать погоду python. white cube.8c3a6fe9. как узнать погоду python фото. как узнать погоду python-white cube.8c3a6fe9. картинка как узнать погоду python. картинка white cube.8c3a6fe9.

Download files

Download the file for your platform. If you’re not sure which to choose, learn more about installing packages.

Источник

Узнаем текущую погоду и прогноз простеньким скриптом на Python’е

На Хабре есть интересная статья о том, как энтузиасты делают погоду. Энтузиасты делают, а мы воспользуемся плодами их трудов — получим эту самую погоду от OpenWeatherMap.org скриптом на Python’е.

Для получения доступа к сервису погоды придется пройти несложную процедуру регистрации на сайте OpenWeatherMap.org. Сформируем и отправим запрос, разберем ответный пакет в формате JSON, и получим текущую температуру с описанием состояния погоды.

как узнать погоду python. d5b62da07ddf4848b3ef2ea1f267d08c. как узнать погоду python фото. как узнать погоду python-d5b62da07ddf4848b3ef2ea1f267d08c. картинка как узнать погоду python. картинка d5b62da07ddf4848b3ef2ea1f267d08c.

Зарегистрироваться на openweathermap.org совсем несложно, а остальное сделать будет ещё проще.

Регистрация нужна для получения идентифицирующей пользователя строки App Id, состоящей из набора букв и цифр (похоже — только из шестнадцатеричных цифр). Такого вида:
«6d8e495ca73d5bbc1d6bf8ebd52c4». После регистрации нужно зайти в личный кабинет и взять App Id, который там называется «API key».

Формирование строки запроса

Сначала попытаемся найти интересующий нас город в их базе. Строка запроса должна быть примерно такая:

В запросе нужно указать нужный город (вместо «Petersburg») и свой App Id (вместо «6d8e495ca73d5bbc1d6bf8ebd52c4». Можно уточнить запрос, указав идентификатор страны после названия города через запятую. Например, так:

Собственно запросная строка будет сформирована самой библиотекой requests в функции get, которую используем для отправки запроса:

Проверка наличия в базе информации о нужном населенном пункте

План такой. В ответ на сформированный запрос получаем пакет в формате JSON. Разбираем пакет и получаем нужные значения по названиям полей.

Запомним числовой идентификатор города city_id для последующего запроса, потому что поставщики сервиса рекомендовали делать запрос не по имени, а по идентификатору.
В ответе может оказаться несколько городов, соответствующих нашему запросу. Кстати, если в запросе указать “Moscow” и убрать страну из строки приведенного в примере запроса, то гарантированно получим несколько строк в списке cities:

Получение информации о текущей погоде

Осталось только получить искомую информацию о погоде. Если нас не интересуют имперские единицы измерения, то в запросе указываем, что желаем получить метрические единицы: «units=metric». Если описание погоды нужно получить на русском, то указываем «lang=ru».

Если верить сервису, сейчас (14.11.2016 в 23:20) в Москве:

Прогноз на 5 дней

На сайте OpenWeatherMap есть ещё масса интересного — получение информации по географическим координатам, архив погоды, информация с конкретных метеостанций. Описание всех доступных сервисов можно посмотреть здесь http://openweathermap.org/api
Для работы на Python’е с OpenWeatherMap существует специализированная библиотека pyowm.

Помимо OpenWeatherMap есть другие сайты, предоставляющие аналогичную информацию. Например, WorldWeatherOnline. Доступные API можно посмотреть здесь. Регистрация нужна. Есть библиотека на Python’е: pywwo.

Источник

weather-api 1.0

pip install weather-api Copy PIP instructions

Released: Dec 17, 2020

This is the new API for weather forecasting.

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

Maintainers

Project description

Getting started

This is the new API for weather forecasting.

How to Build

You must have Python 2 >=2.7.9 or Python 3 >=3.4 installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc. These dependencies are defined in the requirements.txt file that comes with the SDK. To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at https://pip.pypa.io/en/stable/installing/.

How to Use

The following section explains how to use the WeatherApi SDK package in a new project.

1. Open Project in an IDE

Open up a Python IDE like PyCharm. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.

The project files will be displayed in the side bar as follows:

2. Add a new Test Project

Create a new directory by right clicking on the solution name as shown below:

Name the directory as «test»

Add a python file to this project with the name «testsdk»

In your python file you will be required to import the generated python library using the following code lines

After this you can write code to instantiate an API client object, get a controller object and make API calls. Sample code is given in the subsequent sections.

3. Run the Test Project

To run the file within your test project, right click on your Python file inside your Test project and click on Run

How to Test

You can test the generated SDK and the server with automatically generated test cases. unittest is used as the testing framework and nose is used as the test runner. You can run the tests as follows:

Initialization

Authentication

In order to setup authentication and initialization of the API client, you need the following information.

ParameterDescription
appidapp key

API client can be initialized as following.

Class Reference

List of Controllers

FindWeatherController

Get controller instance

An instance of the FindWeatherController class can be accessed from the API Client.

The endpoint to get data of a specific city.

Источник

Python | Обнаружение погоды в реальном времени с использованием Tkinter

Python предлагает несколько вариантов разработки графического интерфейса пользователя. Из всех методов графического интерфейса tkinter является наиболее часто используемым методом. Это стандартный интерфейс Python для инструментария Tk GUI, поставляемый с Python. Python с tkinter выводит самый быстрый и простой способ создания приложений с графическим интерфейсом. Теперь дело за фантазией или необходимостью разработчика, что он / она хочет разработать с помощью этого инструментария.

Чтобы создать ткинтер:

Давайте создадим простое приложение для определения погоды в реальном времени на основе графического интерфейса, которое может предоставлять информацию о погоде в любых городах.

Требуются модули:

Ниже приведена реализация:

# импортировать все функции из tkinter

from tkinter import * from tkinter import messagebox

# функция для поиска информации о погоде
# любого города, использующего API openweathermap

# импорт необходимых модулей

import requests, json

# введите свой ключ API здесь

# base_url переменная для хранения URL

# взять название города из поля ввода city_field

# complete_url переменная для хранения полного адреса URL

complete_url = base_url + «appid =» + api_key

# получить метод модуля запросов

# вернуть объект ответа

# json метод преобразования объекта ответа

# данные формата json в данные формата python

# теперь x содержит список вложенных словарей

# мы знаем, что словарь содержит пару ключ-значение

# проверить значение ключа «cod» равным «404»

# или нет, если нет, значит город найден

# иначе город не найден

# сохранить значение «главного» ключа в переменной y

# сохранить значение, соответствующее клавише «temp» y

current_temperature = y[ «temp» ]

# сохранить значение, соответствующее клавише «нажим» y

current_pressure = y[ «pressure» ]

# сохранить значение, соответствующее клавише «влажность» y

current_humidiy = y[ «humidity» ]

# сохранить значение ключа «погода» в переменной z

# сохранить значение, соответствующее ключу «description»

weather_description = z[ 0 ][ «description» ]

# вставить метод вставки

# значение в поле ввода текста.

# если город не найден

# появится диалоговое окно сообщения, которое

# показывает заданную ошибку meassgae

«Please enter valid city name» )

# очистить содержимое поля ввода city_field

# Функция для очистки
# содержимое всех полей ввода текста

# установить фокус на поле ввода city_field

if __name__ = = «__main__» :

# Создать окно с графическим интерфейсом

# установить имя окна графического интерфейса tkinter

root.title( «Gui Application» )

# Установить цвет фона окна GUI

root.configure(background = «light green» )

# Установить настройки окна GUI

# Создать ярлык приложения Weather Gui

# Создать название города: метка

# Создать название города: метка

# Создайте давление в атм: label

# Создать влажность: метка

# Создать описание: метка

# метод сетки используется для размещения

# виджеты на соответствующих позициях

# в таблице как структура.

# Создать текстовое поле ввода

# для заполнения или ввода информации.

# метод сетки используется для размещения

# виджеты на соответствующих позициях

# в таблице как структура.

# ipadx Аргумент ключевого слова устанавливает ширину пространства ввода.

# Создайте кнопку отправки и прикрепите

# to рассказать функцию

# Создайте кнопку Очистить и прикрепите

# в функцию clear_all

# метод сетки используется для размещения

# виджеты на соответствующих позициях

# в таблице как структура.

# Запустить графический интерфейс

Выход :
как узнать погоду python. pensstatotepemmil126011. как узнать погоду python фото. как узнать погоду python-pensstatotepemmil126011. картинка как узнать погоду python. картинка pensstatotepemmil126011.
как узнать погоду python. comfiedunsmasasalz268501. как узнать погоду python фото. как узнать погоду python-comfiedunsmasasalz268501. картинка как узнать погоду python. картинка comfiedunsmasasalz268501.

Источник

Глава 1. Реализация приложения прогноза погоды

Содержание

Нашим первым приложением в этой книге мы собираемся выбрать приложение веб поиска, которое вычищает информацию прогноза погоды из https:/​/​weather.​com и предоставляет её в терминале. Мы добавим некоторые опции, которые будут передаваться в качестве аргументов в данное приложение, такие как:

Единицы измерения температуры (градусы Цельсия или Фаренгейта)

Область в которой вы желаете получать прогноз погоды

Варианты вывода которые мог бы выбирать пользователь в нашем предложении, вбирая между текущим прогнозом, прогнозом на пять дней, десятидневным предсказанием и прогнозом на выходные

Способы комплектования вывода дополнительной информацией, такой как скорость ветра и влажность

Отделно от вышеупомянутых аргументов данное приложение будет спроектировано под расширения, что означает что мы можем создавать части для различных вебсайтов для получения предсказания погоды и эти анализаторы будут доступны в качестве вариантов аргументов.

В данной главе мы изучим как:

Пользоваться концепциями объектно- ориентированного программирования в приложениях Python

Выскребать данные с вебсайтов с помощью пакета BeautifulSoup

Получать аргументы командной строки

Применять модуль inspect

Динамически загружать модули Python

Применять обозримость Python

Использовать Selenium для запроса вебстраницы и инспекции элементов DOM

Прежде чем мы приступим, важно отметить, что при разработке приложений веб анализа вам следует иметь в виду, что эти приложения чувствительны к изменениям. Если сами разработчики того сайта, с которого вы получает данные изменяют название класс CSS или структуру DOM HTML, ваше приложение перестаёт работать. Кроме того, если изменяется URL того сайта, с которого мы получаем необходимые данные, наше приложение не сможет отправлять запросы.

Установка среды

Перед тем как мы перейдём непосредственно к написанию своего первого примера нам потребуется настроить некую среду для работы и установить все имеющиеся в данном проекте зависимости. К счастью, Python имеет реально хорошую систему инструментов для работы с виртуальными средами.

Виртуальные среды Python являются обширным предметом и выходят за рамки данной книги. Однако, если вы не знакомы с виртуальными средами, вам будет достаточно знать, что виртуальная среда это содержащая Python среда, которая изолирована от вашей глобальной установки Python. Такая изоляция позволяет разработчикам запросто работать с различными версиями Python, устанавливать пакеты в рамках этой среды и управлять зависимостями проекта не мешая основной установке Python.

Для создания новой виртуальной среды откройте терминал и исполните следующую команду:

Если всё пройдёт хорошо, вы должны будете обнаружить каталог с названием weatherterm в том каталоге, в котором вы находитесь в данный момент. Теперь, когда у нас имеется необходимая виртуальная среда, нам всего лишь требуется активировать её следующей командой:

Теперь вам требуется создать некий каталог, в котором вы собираетесь разрабатывать наше приложение. Не создавайте это каталог в том же самом каталоге, в котором вы создали свою виртуальную среду; вместо этого сделайте некий каталог для проектов и создайте необходимый каталог для данного приложения там. Я рекомендую назвать его для простоты с тем же самым названием, что и виртуальная среда.

Это все требующиеся для вашего проекта зависимости:

BeautifulSoup : Этот пакет служит для синтаксического анализа файлов HTML и XML. Мы будем применять его для синтаксического разбора HTML, которые мы будем вытаскивать с сайтов погоды для получения данных о погоде, которые понадобятся нам в терминале. Он очень прост в исполнении и имеет великолепную документацию по ссылке: http:/​/​beautiful-​soup-​4.​readthedocs.​io/en/​latest/ < Прим. пер.: также рекомендуем 2е издание Web Scraping with Python (апрель 2018) Райана Митчелла и вышедший в ДМК Пресс перевод её первого издания Скрапинг веб-сайтов с помощью Python. >

Selenium : Это хорошо известный набор инструментов для проверки. Существует множество приложений, однако именно он применяется чаще всего для автоматизированной проверки веб приложений.

Для установки этих необходимых пакетов в нашей виртуальной среде вы можете исполнить такую команду:

Как всегда, хорошей мыслью будет применять управление версиями подобным GIT или Mercurial. Это очень полезно для контроля за изменением, проверки истории, отката обратно изменений и тому подобного. Если вы не знакомы ни с какими из этих инструментов, в Интернете существует множество руководств. Вы можете начать с проверки документации на самом Git. < Прим. пер.: также обращаем внимание на вышедшее в июне 2018 2е издание GitHub Essentials Achilleas Pipinellis и сделанный в издательстве Питер в 2017 перевод книги С. Чакона и Б. Штрауба Git для профессионального программиста (9785496017633) >.

Нашим последним устанавливаемым средством является PhantomJS.

Получив в свои руки поднятую виртуальную среду и установленный PhantomJS мы готовы начать кодировать!

Функциональность ядра

Динамическая загрузка программ анализа синтаксиса

Создать некий файл с классом, реализующим необходимые методы для извлечения прогноза погоды на текущий момент, а также на пять дней, десять дней и предсказание на выходные дни.

название имени файла не должно начинаться с удвоенного символа подчёркивания

Сказав всё это, давайте продвинемся далее и создадим свой загрузчик синтаксического анализатора. Создайте файл с названием parser_loader.py внутри каталога weatherterm/core и добавьте в него следующее содержимое:

Функция inspect.getmembers возвращает перечень кортежей, в которых первым элементом является некий ключ, представляющий свойство в данном модуле, а вторым элементом является его значение, которое может иметь любой тип. В нашей ситуации для нас представляют интерес свойства с неким ключом, завершающимся на parser и с установленным значением типа класса.

inspect.getmembers(_module) возвращает намного больше элементов, однако они должны быть опущены, так как они не имеют отношения к тому, что мы обсуждаем сейчас.

В самом конце мы выполняем цикл по всем элементам в своём модуле и выделяем необходимые классы анализаторов, возвращая словарь, содержащий название этого класса и сам объект класса, который позднее будет применяться для создания экземпляров данного синтаксического разборщика.

Создание модели приложения

Давайте приступим к созданию модели, которая будет представлять всю информацию, которую наше приложение вытащит из своего вебсайта прогноза погоды. Самый первый элемент, который мы собираемся добавить является перечисление для представления каждого варианта прогноза погоды, которые мы будем предоставлять пользователям приложения. Создайте файл с названием forecast_type.py в каталоге weatherterm/core со следующим содержимым:

Обратите внимание, что мы назначаем постоянные значения, которые отличаются от значения свойства элемента данного перечисления, так как в дальнейшем эти значения будут позже применяться для построения соответствующего URL чтобы выполнять необходимые запросы к вебсайту прогноза погоды.

Нашему приложению требуется ещё одно перечисление для представления единиц измерения температуры, между которыми наш пользователь сможет выполнять выбор из командной строки. Это перечисление будет содержать элементы градусов Цельсия и Фаренгейта.

Для начала давайте включим базовое перечисление. Создадим некий файл с название base_enum.py в каталоге weatherterm/core со следующим содержимым:

Теперь мы можем создать некое перечисление для единиц измерения температуры. Создайте некий файл с названием unit.py в нашем каталоге weatherterm/core с таким содержимым:

Прежде чем попробовать всё это вывести, создайте некий файл с названием __init__.py в нашем каталоге weatherterm/core и импортируйте то перечисление, которое мы только что создали:

Если вы загрузите этот класс в REPL Python и проверите его значение произойдёт следующее:

Другой элемент, который мы также хотим добавить в модуль основного ядра своего приложения это класс для представления самих данных прогноза погоды, которые возвращает наш синтаксический анализатор. Давайте пройдём ещё вперёд и создадим файл с названием forecast.py в нашем каталоге weatherterm/core со следующим содержимым:

В своём классе Forecast мы определим свойства для всех данных, для которых мы намереваемся выполнять синтаксический разбор:

Таблица 1-1.

Представляет значение текущей температуры. Доступно только при получении состояния погоды на сегодня.

Процентное значение влажности на указанную дату

Информация о сегодняшнем текущем уровне ветренности

Наивысшая температура за указанную дату

Наинизшая температура за указанную дату

Описание погодных условий, например Частично облачно

Дата прогноза погоды; если не указана, всё будет относиться к сегодняшнему дню.

Значения кода форматов %a и %b будут применять локальные настройки той машины, в которой исполняется данный код.

По умолчанию применяемой в weather.com единицей изменения температуры является шкала Fahrenheit и мы желаем дать всем пользователям нашего приложения вариант применения вместо неё градусов Цельсия. Пэтому пройдём далее и создадим ещё один файл в своём каталоге weatherterm/core с названием unit_converter.py и следующим содержимым:

Именно этот класс будет выполнять преобразование температуры из градусов Цельсия в шкалу Фаренгейта и наоборот. Наш инициализатор для данного класса получает два аргумента; значение единиц измерения, применяемое по умолчанию нашим синтаксическим анализатором и результирующие единицы измерения. В этом инициализаторе мы определим некий словарь, содержащий необходимые функции, которые будут применяться для преобразования единиц измерения температуры.

Наш метод convert получает только один параметр, значение температуры. Здесь значение температуры является строковой величиной, поэтому первое что нам требуется сделать, это попытаться преобразовать её в значение с плавающей точкой (float); если попытка завершается неудачей, она непосредственно возвратит нулевое значение.

Вы также можете выполнить требуемую единицу измерения погоды на предмет того является ли она той же самой, что и установленная в значении по умолчании у нашего синтаксического анализатора. Если да, то нам нет нужды продолжать и выполнять преобразование; мы просто форматируем полученное значение и возвращаем его.

Теперь нам только требуется изменить файл __init__.py в своём каталоге weatherterm/core и включить следующие операторы импорта:

Извлечение данных с веб сайта погоды

Вы можете заметить, что я устанавливаю для некоторых свойств своего класса символ подчерка в качестве префикса. Обычно я применяю это с тем, чтобы показать что данное свойство является частным (private) и не должно устанавливаться вне данного класса. В Python нет нужды в этом, так как нет способа для установки частных или общедоступных (public) свойств; тем не менее мне нравится так поступать всегда, потому что это позволяет более чётко указывать мои намерения.

Теперь мы можем импортировать его в свой файл __init__.py в нашем каталоге weatherterm/core :

Получение ввода пользователя при помощи ArgumentParser

Перед тем как вы запустите своё приложение в первый раз, вам понадобится добавить собственно точку входа в приложение. Такой точкой входа является тот самый первый код, который будет запускаться при исполнении нашего приложения.

Мы хотим предоставить пользователям своего приложения наилучшую из имеющейся практику пользователя, поэтому самым первым необходимым для добавления свойством является возможность получения и разбора аргументов командной строки, выполнения проверки аргумента, установки аргументов в случае необходимости и, наконец последнее, но не менее важное, продемонстрировать организацию и информативность системы подсказок для того чтобы пользователи могли увидеть какие аргументы могут применяться и как пользоваться данным приложением.

Звучит несколько вызывающе, не так ли?

Имеется и другое свойство, которым также недурно воспользоваться для более простого распространения нашего приложения среди своих потребителей. Этот подход состоит в создании некоторого файла __main__.py в главном каталоге нашего модуля weatherterm и вы сможете запускать этот модуль как обычный сценарий. Python автоматически запустит файл __main__.py следующим образом:

Ещё одним вариантом является заархивировать (zip) весь каталог приложения и исполнить Python, передав ему вместо самого названия такой файл ZIP. Это некий лёгкий, быстрый и простой способ распространения наших программ Python.

Сказав всё это, давайте создадим некий файл __main__.py внутри своего каталога weatherterm со следующим содержимым:

Варианты прогноза погоды (сегодня, пять дней, десять дней и прогноз на выходные), которые наше приложение может принимать не являются обязательными; однако по крайней мере один параметр должен быть представлен в нашей командной строке, поэтому мы создаём некую простую функцию с названием _validate_forecast_args для выполнения для нас такой проверки. Эта функция покажет сообщение подсказки и покинет наше приложение.

Во- первых мы получим все доступные в нашем каталоге weatherterm/parsers процедуры синтаксического разбора. Список таких процедур анализа будет применяться как допустимые значения для входных параметров процедур анализа.

Именно имеющийся объект ArgumentParser будет тем, что создаёт задание определения необходимых параметров, разбора их значений и отображения подсказки, поэтому мы создадим некий экземпляр ArgumentParser и также создадим группу аргументов для всех необходимых параметров. Это сделает вывод нашей подсказки выглядящем намного более привлекательным и более упорядоченным.

Мы достигаем этого воспользовавшись такой строкой:

После создания такой группы аргументов для всех обязательных параметров мы получаем перечень всех участников перечисления Unit и применяем функцию title() чтобы сделать только самые первые буквы заглавными.

Теперь мы можем начинать добавлять необходимые параметры для своего приложения, которые будет способна воспринимать наша командная строка. Большинство определений параметров применяют тот же самый набор ключевых слов аргументов, поэтому я не буду обсуждать их все.

Давайте рассмотрим каждый параметр вызова add_argument из применяемых при создании данного флага синтаксического разбора:

Действия могут быть ограничены создаваемыми нами аргументами и они могут выполнять много чего. Наш модуль argparse содержит большое множество действий, однако если вам необходимо делать что- то определённое, вы можете создавать своё собственное действие, которое будет удовлетворять вашим потребностям. Большинство определяемых в модуле argparse действий предназначаются для запоминания значений и синтаксического анализа результатов атрибутов объекта.

Помните я казал что вы можете создавать свои собственные действия? Наш элемент аргумента является великолепным вариантом использования индивидуального действия. Наш аргумент choices является всего лишь перечнем строк, поэтому мы применяем эту выразительность для представления полного списка имён всех элементов в своём перечислении Unit следующим образом:

Возвращаемый parse_args() объект будет содержать некий атрибут с названием unit <единицы измерения>со строковым значением ( Celsius или Fahrenheit ), однако это не совсем то что нам нужно. Было бы не плохо вместо этого иметь данное значение как некий элемент перечисления, не так ли? Мы можем изменить существующий порядок вещей, создав некое индивидуальное действие.

Во- первых, добавим некий новый файл с названием set_unit_action.py в свой каталог weatherterm/core с таким содержимым:

К счастью, перечисление в Python делает для нас возможным доступ к своим участникам и атрибутам при помощи элементов доступа:

Проверив это в REPL Python мы получаем:

После получения правильного участника перечисления мы устанавливаем его значение, определяя его надлежащим образом с помощью self.dest в самом пространстве имён объекта. Это намного понятнее и у нас нет нужды применять магические строки.

Поместив на своё место индивидуальное действие, нам понадобится добавить оператор импорта в свой файл __init__.py в основном каталоге weatherterm/core :

Просто включите эту приведённую выше строку в самый конец указанного файла. Затем нам понадобится импортировать её в свой файл __main__.py таким манером:

И мы собираемся также добавить ключевое слово action в самом определении данного аргумента unit и установить его в SetUnitAction так:

Создание программы синтаксического анализа

Для того чтобы запустить наш код в первый раз нам следует создать некий синтаксический разборщик. Мы можем быстро создать процедуру синтаксического анализа исполнив свой код и проверив верно ли разбираются получаемые значения.

Теперь это приложение наконец готово для исполнения в самый первый раз если вы исполните данную команду в своей командной строке:

Вы должны увидеть опции в подсказке нашего приложения:

Как вы можете видеть, наш модуль ArgumentParse уже предоставляет вывод сразу после установки для выдачи подсказки. Имеются способы которыми вы способны делать этот вывод индивидуальным, таким, каким вы его пожелаете сделать, однако я на самом деле нахожу установленную по умолчанию схему вполне приемлемой.

Теперь если вы запустите своё приложение снова и на этот раз передадите ему какие- то параметры:

Вы получите некую исключительную ситуацию подобную такой:

Рисунок 1-1

как узнать погоду python. Fig0101. как узнать погоду python фото. как узнать погоду python-Fig0101. картинка как узнать погоду python. картинка Fig0101.

Получения прогноза погоды на сегодня

Вся центральная функциональность размещена по своим местам и наша точка входа в данном приложении по согласованию с процедурой разбора делает возможной для нашего приложения намного лучшую практику применения. Теперь настало окончательное время которого мы так долго ждали начать реализовывать саму процедуру основного анализа. Мы приступим к реализации основного метода получения сегодняшнего прогноза погоды.

Поскольку сам я из Швеции, я буду применять код области SWXX2372:1:SW (Стокгольм, Швеция); однако, вы можете воспользоваться любым кодом по своему выбору. Для получения своего кода пройдите на ​weather.​com и отыщите код того региона, который нужен вам. После выбора этой области будет отображён прогноз погоды на текущий день. Отметим ключевые особенности изменения в URL, скажем,когда мы отыскиваем Стокгольм, Швеция, наш URL изменяется на https:/​/​weather.​com/​weather/​today/​l/​SWXX2372:1:SW.

Заметим, что меняется всего лишь одна часть общего URL, и эта именно та часть кода, обозначающая нашу область, которую мы и хотим передавать в качестве аргумента своего приложения.

Добавление методов помощника

Чтобы начать нам потребуется импортировать некоторые пакеты:

А в инициализаторе мы собираемся добавить следующий код:

Регулярные выражения применяются только для разбора прогноза температур погоды на сегодня.

Теперь мы готовы начать добавлять два метода, которые будут отвечать за активный поиск элементов HTML с определённым классом и возвращать их содержимое. Самый первый метод называется _get_data :

Основная идея данного метода состоит в поиске элементов с содержимым, которое соответствует неким критериям. Сам container это всего лишь элемент DOM в HTML, а search_items является неким словарём, в котором значением ключа является некий класс CSS, а его значением является сам тип данного элемента HTML. Это может быть DIV, SPAN или любой иной, в котором вы желаете получить искомое значение.

Он начинается с цикла по search_items.items() и применяет метод find для поиска необходимого элемента внутри данного контейнера. Если данный элемент не найден, мы применяем get_text для выделения значения текста данного элемента DOM и добавления его в свой словарь, который мы будем возвращать когда не останется больше элементов поиска.

Полученные результаты составят некий список словарей со всеми найденными элементами и мы возвратим только те словари, которые не являются пустыми.

Имеет ся только два вспомогательных метода, которые нам требуется реализовать чтобы получить прогноз погоды на сегодня в нужном месте. Давайте реализуем некий метод с названием _clear_str_number :

Этот метод применяет регулярное выражение чтобы убедиться что возвращаются только численные значения.

А последний метод, который нам необходимо реализовать это метод _get_additional_info :

Реализация прогноза погоды на сегодня

Теперь мы можем добавить нужный нам метод _today_forecast :

Как это уже отмечалось выше, ключом в данном словаре criteria является само название элемента CSS класса DOM, а его значением является сам тип элемента HTML:

Класс today_nowcard-temp является неким классом CSS данного элемента DOM, содержащего значение текущей темперантуры.

Класс today_nowcard-hilo это класс CSS определённого элемента DOM, который содержит наивысшую и минимальную температуры.

После этого мы переходим к выборке, созданию и использованию BeautifulSoup для синтаксического анализа нашего DOM^

Вначале мы пользуемся методом BeautifulSoup из своего класса Request чтобы создать необходимый модуль ядра и передать два параметра; причём первым является вариант прогноза, а вторым аргумент кода области, которые мы передаём своей командой строке.

Следующий наш шаг расщепляет значения самой высокой и самой низкой температур:

Прочая информация, которую нам следовало бы предоставлять своим пользователям, это информация о ветренности и влажности. Соответствующий элемент контейнера, который содержит эту информацию, имеет класс CSS с названием today_nowcard-sidecar :

Наконец, самая последняя часть данного метода:

Теперь у нас есть вся необходимая нам информация, мы построили необходимый объект span > Forecast и выполнили его возврат. Отметим, что здесь мы возвращаем некий массив; это происходит по той причине, что все прочие варианты, которые мы собираемся реализовать (прогнозы на пять дней, десять дней и на выходные) будут возвращать список и чтобы делать это последовательно; а также для удобства отображения данной информации на вашем терминале, мы также возвращаем перечень.

Ещё один момент, который стоит отметить состоит в том, что мы применяем определённый нами метод преобразования UnitConverter для конвертации всех значений температур в выбранные нами в командной строке единицы измерения.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

СвойствоОписание