Open In App

Get Live Weather Desktop Notifications Using Python

Last Updated : 05 Jul, 2025
Suggest changes
Share
Like Article
Like
Report

We know weather updates are how much important in our day-to-day life. So, We are introducing the logic and script with some easiest way to understand for everyone. Let’s see a simple Python script to show the live update for Weather information. 

Modules Needed

In this script, we are using some libraries

  • bs4: Beautiful Soup(bs4) is a Python library for pulling data out of HTML and XML files. To install this module type the below command in the terminal.

pip install bs4

  • win10toast: This library helps in creating desktop notifications. To install this module type the below command in the terminal.

pip install win10toast

  • requests: This library allows you to send HTTP/1.1 requests extremely easily. To install this module type the below command in the terminal.

pip install requests

Approach :

  1. Extract data from the weather website using requests.
  2. Parse the HTML using BeautifulSoup.
  3. Filter the relevant weather information.
  4. Format the information as a string.
  5. Show a desktop notification with the result.

Step-by-Step Implementation (Windows)

Step 1: Import all dependence

Python
import requests from bs4 import BeautifulSoup from win10toast import ToastNotifier 

Step 2: Create an object of ToastNotifier class.

Python
n = ToastNotifier() 

Step 3: Define a function for getting data from the given url.

Python
def getdata(url): r = requests.get(url) return r.text 

Step 4: Now pass the URL into the getdata function and Convert that data into HTML code.

Python
htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/") soup = BeautifulSoup(htmldata, 'html.parser') print(soup.prettify()) 

After executing this script you will get raw data like these:

Raw HTML information 

Step 5: Find the required details and filter them 

Python
current_temp = soup.find_all("span", class_=" _-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY") chances_rain = soup.find_all("div", class_= "_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf") temp = (str(current_temp)) temp_rain = str(chances_rain) res = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" +temp_rain[131:-14] 

Step 6: Now pass the result into notifications object.

Python
n.show_toast("Weather update", res, duration = 10) 

Output :

notification 

Complete Code:

Python
import requests from bs4 import BeautifulSoup from win10toast import ToastNotifier n = ToastNotifier() # object def getdata(url): r = requests.get(url) return r.text htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/") soup = BeautifulSoup(htmldata, 'html.parser') current_temp = soup.find_all("span", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY") chances_rain = soup.find_all("div", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf") temp = str(current_temp) temp_rain = str(chances_rain) res = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" + temp_rain[131:-14] n.show_toast("live Weather update", res, duration=10) 

Output

Live Notification

Cross-Platform Support for macOS/Linux

Since win10toast only works on Windows, you can use the plyer module for notifications on macOS, Linux and Windows.

Step 1: Install Required Modules

Python
pip install requests pip install bs4 pip install plyer 

Step 2: Import All Dependencies

Python
import requests from bs4 import BeautifulSoup from plyer import notification 

Step 3: Create a Function to Get Data from the URL

Python
def getdata(url): r = requests.get(url) return r.text 

Step 4: Fetch and Parse the HTML Data

Python
htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/") soup = BeautifulSoup(htmldata, 'html.parser') 

Step 5: Filter the Required Weather Details

Python
current_temp = soup.find_all("span", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY") chances_rain = soup.find_all("div", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf") temp = str(current_temp) temp_rain = str(chances_rain) res = "Current Temperature: " + temp[128:-9] + " in Patna, Bihar" + "\n" + "Rain Chances: " + temp_rain[131:-14] 

Step 6: Display the Desktop Notification

Python
notification.notify( title="live weather update", message=res, timeout=10 ) 

Complete code:

Python
import requests from bs4 import BeautifulSoup from plyer import notification def getdata(url): r = requests.get(url) return r.text htmldata = getdata("https://weather.com/en-IN/weather/today/l/25.59,85.14?par=google&temp=c/") soup = BeautifulSoup(htmldata, 'html.parser') current_temp = soup.find_all("span", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--tempValue--MHmYY") chances_rain = soup.find_all("div", class_="_-_-components-src-organism-CurrentConditions-CurrentConditions--precipValue--2aJSf") temp = str(current_temp) temp_rain = str(chances_rain) res = "Current Temperature: " + temp[128:-9] + " in Patna, Bihar" + "\n" + "Rain Chances: " + temp_rain[131:-14] notification.notify( title="live weather update", message=res, timeout=10 ) 

Output


Next Article

Similar Reads