使用Python获取实时天气桌面通知
我们知道天气更新在我们的日常生活中是多么重要。因此,我们正在以一些最简单的方式为大家介绍逻辑和脚本。让我们看一个简单的Python脚本来显示天气信息的实时更新。
需要的模块
在这个脚本中,我们使用了一些库
- bs4 : Beautiful Soup(bs4) 是一个Python库,用于从 HTML 和 XML 文件中提取数据。要安装此模块,请在终端中键入以下命令。
pip install bs4
- win10toast:这个库有助于创建桌面通知。要安装此模块,请在终端中键入以下命令。
pip install win10toast
- requests :该库允许您非常轻松地发送 HTTP/1.1 请求。要安装此模块,请在终端中键入以下命令。
pip install requests
方法 :
- 提取给定 URL 的数据表单。
- 在 requests 和 Beautiful Soup 的帮助下抓取数据。
- 将该数据转换为 html 代码。
- 找到所需的详细信息并过滤它们。
- 将结果保存在字符串中。
- 在 Notification 对象中传递结果。
让我们逐步执行脚本:
第一步:导入所有依赖
Python3
import requests
from bs4 import BeautifulSoup
from win10toast import ToastNotifier
Python3
n = ToastNotifier()
Python3
def getdata(url):
r = requests.get(url)
return r.text
Python3
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())
Python3
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)
result = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" +temp_rain[131:-14]
Python3
n.show_toast("Weather update", result, duration = 10)
Python3
# import required libraries
import requests
from bs4 import BeautifulSoup
from win10toast import ToastNotifier
# create an object to ToastNotifier class
n = ToastNotifier()
# define a function
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)
result = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" + temp_rain[131:-14]
n.show_toast("live Weather update",
result, duration = 10)
第 2 步:创建 ToastNotifier 类的对象。
Python3
n = ToastNotifier()
第 3 步:定义一个从给定 url 获取数据的函数。
Python3
def getdata(url):
r = requests.get(url)
return r.text
第 4 步:现在将 URL 传递给 getdata函数并将该数据转换为 HTML 代码。
Python3
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())
执行此脚本后,您将获得如下原始数据:
第 5 步:找到所需的详细信息并过滤它们
Python3
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)
result = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" +temp_rain[131:-14]
第 6 步:现在将结果传递给通知对象。
Python3
n.show_toast("Weather update", result, duration = 10)
输出:
完整代码:
Python3
# import required libraries
import requests
from bs4 import BeautifulSoup
from win10toast import ToastNotifier
# create an object to ToastNotifier class
n = ToastNotifier()
# define a function
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)
result = "current_temp " + temp[128:-9] + " in patna bihar" + "\n" + temp_rain[131:-14]
n.show_toast("live Weather update",
result, duration = 10)
输出: