با واکشی داده هایی که به صورت رایگان در اینترنت در دسترس هستند، یک برنامه ساده آب و هوا بسازید.
سادگی و سازگاری پایتون به آن کمک کرده تا در طول سال ها محبوبیت پیدا کند. با پایتون می توانید به راحتی داده های مفید را از طریق اینترنت بازیابی کنید. سپس می توانید از آن داده ها برای هدایت یک برنامه کاربردی استفاده کنید.
بیاموزید که چگونه دادههای آبوهوای همزمان را با استفاده از اسکراپینگ وب و APIها پیدا کنید. می توانید از این داده های واکشی شده برای توسعه یک برنامه آب و هوای ساده استفاده کنید.
با استفاده از Web Scraping جزئیات آب و هوای فعلی یک شهر را دریافت کنید
وب اسکرپینگ فرآیند استخراج داده ها و محتوا از یک وب سایت است. واکشی خودکار داده ها از وب موارد استفاده زیادی را باز می کند. اما بیشتر این داده ها در قالب HTML هستند که برای استخراج داده های مربوطه باید آن ها را تجزیه و بررسی کنید.
شما می توانید داده های آب و هوای زنده هر شهری را با استفاده از وب اسکرپینگ استخراج کنید. کتابخانه BeautifulSoup پایتون کتابخانه ای است که داده ها را از فایل های HTML و XML بیرون می آورد. برای شروع فرآیند اسکرپینگ، باید کتابخانه BeautifulSoup Python را از طریق پیپ نصب کنید. برای نصب کتابخانه های BeautifulSoup و درخواست ها، دستور زیر را در ترمینال اجرا کنید:
pip install beautifulsoup4 requests
پس از نصب کتابخانه های مورد نیاز، با وارد کردن آنها در کد خود شروع کنید:
کد مورد استفاده در این پروژه در a موجود است
مخزن GitHub
و استفاده از آن تحت مجوز MIT برای شما رایگان است.
from bs4 import BeautifulSoup
import requests
در مرحله بعد، باید جزئیات هدر را ارائه دهید تا مشتری و سرور بتوانند اطلاعات اضافی را با درخواست یا پاسخ HTTP ارسال کنند:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
یک تابع find_weather() ایجاد کنید تا با استفاده از متد requests.get() یک پرس و جو در گوگل ایجاد کنید. از URL جستجو برای دریافت آب و هوای شهر استفاده میکنید، سپس دادههای معنیدار را برای دریافت مکان، دما، زمان و توضیحات آبوهوا حذف میکنید. سپس، از BeautifulSoup برای تجزیه پاسخ HTML دریافتی استفاده کنید:
deffind_weather(city_name):
city_name = city_name.replace(" ", "+")
try:
res = requests.get(
f'https://www.google.com/search?q={city_name}&oq={city_name}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&ie=UTF-8', headers=headers)
print("Loading...")
soup = BeautifulSoup(res.text, 'html.parser')
location = soup.select('#wob_loc')[0].getText().strip()
time = soup.select('#wob_dts')[0].getText().strip()
info = soup.select('#wob_dc')[0].getText().strip()
temperature = soup.select('#wob_tm')[0].getText().strip()
print("Location: " + location)
print("Temperature: " + temperature + "°C")
print("Time: " + time)
print("Weather Description: " + info)
except:
print("Please enter a valid city name")
برای استخراج شناسه عناصر، جستجوی گوگل را انجام دهید و صفحه را در مرورگر خود با استفاده از ابزارهای وب بررسی کنید. برای یافتن شناسههای عنصر HTML که میخواهید دادهها را برای آن استخراج کنید، باید عنصر را بررسی کنید:
در مرحله بعد، این شناسه ها را به متد select() ارسال کنید. این روش یک انتخابگر CSS را در برابر سند تجزیه شده اجرا می کند و تمام عناصر منطبق را برمی گرداند. متد getText() متن را از عنصر HTML استخراج می کند. متد strip() هر کاراکتر فضای خالی اصلی و انتهایی را از متن حذف می کند. هنگامی که یک مقدار تمیز را استخراج کردید، می توانید آن را در یک متغیر ذخیره کنید.
در نهایت از کاربر بخواهید یک شهر را وارد کرده و آن را به تابع find_weather ارسال کند:
city_name = input("Enter City Name: ")
city_name = city_name + " weather"
find_weather(city_name)
حالا وقتی کد را اجرا می کنید، از شما می خواهد که نام شهر را وارد کنید. برای دریافت نتایج باید یک نام شهر معتبر وارد کنید در غیر این صورت کد یک استثنا ایجاد می کند.
با استفاده از OpenWeatherMap API جزئیات آب و هوای فعلی یک شهر را دریافت کنید
OpenWeatherMap یک سرویس آنلاین است که متعلق به OpenWeather Ltd است. API آن داده های آب و هوای جهانی از جمله آب و هوای فعلی، پیش بینی ها و داده های گذشته را برای هر مکان ارائه می دهد. سطح رایگان OpenWeatherMap API داده های آب و هوای فعلی را با محدودیت 60 تماس در دقیقه ارائه می دهد. برای دریافت کلید API خود باید یک حساب کاربری در OpenWeatherMap ایجاد کنید.
کد را با کلید API به یک مخزن عمومی فشار ندهید زیرا هر کسی که به فایل های منبع شما دسترسی دارد می تواند کلید شما را ببیند و بدزدد. در یک برنامه تولیدی، در نظر بگیرید
انتقال داده های کلید API به یک فایل env
برای افزایش امنیت
به وب سایت OpenWeatherMap بروید و یک حساب کاربری رایگان ایجاد کنید. پس از ایجاد حساب، می توانید کلیدهای API خود را در صفحه My API Keys پیدا کنید. میتوانید از کلید API پیشفرض ارائهشده توسط OpenWeatherMap استفاده کنید یا یکی از کلیدهای خود را ایجاد کنید. OpenWeatherMap پشتیبانی برای تولید کلیدهای API به تعداد مورد نیاز برای پروژه های شما را فراهم می کند.
اکنون، شما آماده بازیابی اطلاعات آب و هوای زنده هستید.
# Importing libraries
import requests
import json
# Enter your OpenWeatherMap API key here
# DO NOT push it to a public repository
API_Key = "Your_API_Key"
# Provide a valid city name
city_name = input("Enter city name: ")
# Constructing the API URL path
url = f"http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={API_Key}"
# Making a get request to the API
response = requests.get(url)
# Converting JSON response to a dictionary
res = response.json()
# Uncomment the next line to see all
# data that are fetched from the API
# print(res)
# Checking if the city is found
# If the value of "cod" is not 404,
# that means the city is found
if res["cod"] != "404":
data = res["main"]
# Storing the live temperature data
live_temperature = data["temp"]
# Storing the live pressure data
live_pressure = data["pressure"]
desc = res["weather"]
# Storing the weather description
weather_description = desc[0]["description"]
print("Temperature (in Kelvin scale): " + str(live_temperature))
print("Pressure: " + str(live_pressure))
print("Description: " + str(weather_description))
else:
# If the city is not found,
# this block of code will be executed
print("Please enter a valid city name")
اگر یک کلید API معتبر ارائه دهید و نام شهر را درست وارد کنید، دادهها را از API در قالب JSON دریافت خواهید کرد. در مرحله بعد، باید این دادههای فرمت JSON را با استفاده از روش json() به یک شی پایتون تبدیل کنید تا عملیاتهای بعدی را انجام دهید. اگر شهر پیدا شد، باید شی dict (res) را برای استخراج اطلاعات مورد نیاز حل کنید.
برنامه آب و هوا را با استفاده از داده های آب و هوای زنده توسعه دهید
اکنون که نحوه واکشی دادههای زنده با استفاده از OpenWeatherMap API را آموختهاید، آمادهاید تا با استفاده از آن یک برنامه آبوهوای ساده توسعه دهید. ساختن یک برنامه آب و هوا می تواند به شما کمک کند تا آنچه را که می دانید به کار ببرید و مهارت های پایتون خود را تقویت کنید.
کثیف کردن دستان خود در پروژه های عملی می تواند شما را به یک توسعه دهنده بهتر تبدیل کند. میتوانید برخی پروژههای پایتون دیگر مانند سیستم ورود، برنامه آزمون یا کوتاهکننده URL را توسعه دهید تا مهارتهای توسعه پایتون خود را تقویت کنید.