Простотата и адаптивността на Python му помогнаха да спечели популярност през годините. Можете лесно да извличате полезни данни по интернет с Python. След това можете да използвате тези данни, за да управлявате практическо приложение.

Научете как да намирате данни за времето в реално време с помощта на уеб сканиране и API. Можете да използвате тези извлечени данни, за да разработите просто приложение за времето.

Вземете текущи подробности за времето в даден град с помощта на уеб скрапинг

Уеб скрапингът е процес на извличане на данни и съдържание от уебсайт. Автономното извличане на данни от мрежата отваря много случаи на употреба. Но повечето от тези данни са в HTML формат, който трябва да анализирате и инспектирате, за да извлечете подходящи данни.

Можете да извличате данни за времето на живо за всеки град, като използвате уеб извличане. Библиотеката BeautifulSoup на Python е основната библиотека за изтегляне на данни от HTML и XML файлове. Трябва да инсталирате библиотеката на BeautifulSoup Python чрез pip, за да започнете процеса на изстъргване. Изпълнете следната команда в терминала, за да инсталирате библиотеките BeautifulSoup и заявки:

instagram viewer

пип Инсталирай beautifulsoup4 заявки

След като инсталирате необходимите библиотеки, започнете с импортирането им във вашия код:

Кодът, използван в този проект, е наличен в a GitHub хранилище и е безплатен за използване под лиценза на MIT.

от bs4 импортиране Красива супа
импортиране заявки

След това трябва да предоставите подробности за заглавката, така че клиентът и сървърът да могат да предават допълнителна информация с HTTP заявка или отговор:

заглавки = {
'Потребителски агент': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, като Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

Създайте функция, find_weather(), за да направите заявка до Google, като използвате requests.get() метод. Ще използвате URL за търсене, за да получите времето за даден град, след което ще изчерпите значимите данни, за да получите местоположение, температура, час и описание на времето. След това използвайте BeautifulSoup, за да анализирате получения HTML отговор:

дефнамери_времето(име на град):
име_на_град = име_на_град.замени("", "+")

опитвам:
res = requests.get(
f'https://www.google.com/search? q={име_на_град}&oq={име_на_град}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&т.е.=UTF-8', заглавки=заглавки)

печат ("Зареждане...")

супа = Красива супа (res.text, 'html.parser')
местоположение = soup.select('#wob_loc')[0].getText().strip()
време = soup.select('#wob_dts')[0].getText().strip()
информация = soup.select('#wob_dc')[0].getText().strip()
температура = soup.select('#wob_tm')[0].getText().strip()

печат ("местоположение: " + местоположение)
печат ("температура: " + температура + "°° С")
печат ("Време: " + време)
печат ("Описание на времето: " + информация)
с изключение:
печат ("Моля, въведете валидно име на град")

За да извлечете идентификаторите на елементите, извършете търсене в Google и проверете страницата в браузъра си с помощта на уеб инструменти. Трябва да инспектирате елемента, за да намерите идентификаторите на HTML елемента, за който искате да извлечете данни:

След това предайте тези идентификатори на изберете () метод. Този метод изпълнява CSS селектор срещу анализирания документ и връща всички съответстващи елементи. The getText() метод извлича текста от HTML елемента. The Лента() метод премахва всички начални и завършващи празни знаци от текста. След като извлечете чиста стойност, можете да я съхраните в променлива.

Накрая помолете потребителя да въведе град и да го прехвърли на намери_времето функция:

име_на_град = вход("Въведете име на град: ")
име_на_град = име_на_град + " метеорологично време"
намери_времето (име_на_град)

Сега, когато стартирате кода, той ще ви подкани да въведете име на град. Трябва да въведете валидно име на град, за да получите резултатите или кодът ще предизвика изключение.

Вземете текущи подробности за времето в даден град с помощта на OpenWeatherMap API

OpenWeatherMap е онлайн услуга, собственост на OpenWeather Ltd. Неговият API предоставя глобални данни за времето, включително текущо време, прогнози и минали данни за всяко местоположение. Безплатното ниво на OpenWeatherMap API предоставя текущи данни за времето с лимит от 60 разговора/минута. Трябва да създадете акаунт в OpenWeatherMap, за да получите свой собствен API ключ.

Не изпращайте кода с API ключа към публично хранилище, тъй като всеки с достъп до изходните ви файлове може да види и открадне вашия ключ. В производствено приложение, помислете преместване на данните за ключовете на API към .env файл за повишена сигурност.

Отидете на OpenWeatherMap's уебсайт и създайте безплатен акаунт. След като създадете акаунта, можете да намерите вашите API ключове на Моите API ключове страница. Можете да използвате API ключа по подразбиране, предоставен от OpenWeatherMap, или да генерирате свой собствен. OpenWeatherMap предоставя поддръжка за генериране на толкова API ключове, колкото са необходими за вашите проекти.

Сега сте готови да извлечете данните за времето на живо.

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

# Въведете своя OpenWeatherMap API ключ тук
# НЕ го избутвайте в публично хранилище
API_Key = "Вашият_API_ключ"

# Въведете валидно име на град
име_на_град = вход("Въведете името на града: ")

# Конструиране на URL пътя на API
url = f"http://api.openweathermap.org/data/2.5/weather? q={име_на_град}&appid={API_Key}"

# Извършване на заявка за получаване към API
отговор = requests.get (url)

# Преобразуване на JSON отговор в речник
res = response.json()

# Разкоментирайте следващия ред, за да видите всички
# данни, които се извличат от API
# печат (рез.)

# Проверка дали градът е намерен
# Ако стойността на "cod" не е 404,
# това означава, че градът е намерен
ако res["треска"] != "404":
данни = res["основен"]

# Съхраняване на данните за температурата на живо
жива_температура = данни["темп"]

# Съхраняване на данните за налягането в реално време
live_pressure = данни["налягане"]
desc = res["метеорологично време"]

# Съхраняване на описанието на времето
описание_на времето = описание[0]["описание"]
печат ("Температура (по скалата на Келвин): " + str (жива_температура))
печат ("налягане: " + str (живо_налягане))
печат ("Описание: " + str (описание_на_времето))

друго:
# Ако градът не бъде намерен,
# този блок от код ще бъде изпълнен
печат ("Моля, въведете валидно име на град")

Ако предоставите валиден API ключ и въведете правилното име на града, ще получите данните от API във формат JSON. След това трябва да конвертирате тези данни във формат JSON в обект на Python, като използвате json() метод за извършване на допълнителни операции. Ако градът бъде намерен, ще трябва да разрешите dict обекта (рез), за да извлечете необходимата информация.

Разработете приложение за времето, като използвате данните за времето на живо

Сега, след като научихте как да извличате данни на живо с помощта на OpenWeatherMap API, вие сте готови да разработите просто приложение за времето, като го използвате. Създаването на приложение за времето може да ви помогне да приложите това, което знаете, и да усъвършенствате уменията си за Python.

Изцапването на ръцете ви с практически проекти може да ви направи по-добър разработчик. Можете да разработите някои други проекти на Python като система за влизане, приложение за тестове или съкращаване на URL адреси, за да затвърдите уменията си за разработка на Python.