📜  使用Python获取实时天气桌面通知

📅  最后修改于: 2022-05-13 01:55:15.793000             🧑  作者: Mango

使用Python获取实时天气桌面通知

我们知道天气更新在我们的日常生活中是多么重要。因此,我们正在以一些最简单的方式为大家介绍逻辑和脚本。让我们看一个简单的Python脚本来显示天气信息的实时更新。

需要的模块

在这个脚本中,我们使用了一些库

  • bs4 : Beautiful Soup(bs4) 是一个Python库,用于从 HTML 和 XML 文件中提取数据。要安装此模块,请在终端中键入以下命令。
pip install bs4
  • win10toast:这个库有助于创建桌面通知。要安装此模块,请在终端中键入以下命令。
pip install win10toast
  • requests :该库允许您非常轻松地发送 HTTP/1.1 请求。要安装此模块,请在终端中键入以下命令。
pip install requests

方法 :

  1. 提取给定 URL 的数据表单。
  2. 在 requests 和 Beautiful Soup 的帮助下抓取数据。
  3. 将该数据转换为 html 代码。
  4. 找到所需的详细信息并过滤它们。
  5. 将结果保存在字符串中。
  6. 在 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())

执行此脚本后,您将获得如下原始数据:

原始 HTML 信息

第 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)

输出:

实时通知