python項目之 天氣程序 帶GUI

python項目之 天氣程序 帶GUI

抓取的數據源

http://wthrcdn.etouch.cn/WeatherApi?citykey=101020100

使用的類庫

thinter
requests
beautifulsoup

思路

抓取到返回的數據,解析後,存到本地和顯示在GUI界面上。

需要下一步更新

下一步需要封裝成函數,數據使用詞典存。

源碼奉上

#encoding = 'utf8'
#########################
##coding by 劉雲飛
#########################
import requests
from bs4 import BeautifulSoup
from tkinter import *
import datetime

def refresh():
    pass

requests.session()
r = requests.get('http://wthrcdn.etouch.cn/WeatherApi?citykey=101020100')
#print(r.status_code)
soup = BeautifulSoup(r.text,'lxml')
#print(soup.prettify())
a = soup.find_all('city')
city = a[0].get_text()
print(a[0].get_text())
a = soup.find_all('wendu')
wendu = a[0].get_text()
print('溫度爲:',a[0].get_text())
a = soup.find_all('shidu')
shidu = a[0].get_text()
print('溼度爲:',a[0].get_text())
a = soup.find_all('fengli')
fengli = a[0].get_text()
print('風力:',a[0].get_text())
a = soup.find_all('fengxiang')
fengxiang = a[0].get_text()
print('風向:',a[0].get_text())
a = soup.find_all('quality')
quality = a[0].get_text()
print('空氣質量:',a[0].get_text())
a = soup.find_all('pm25')
pm25 = a[0].get_text()
print('PM2.5:',a[0].get_text())

date_time = datetime.datetime.now().strftime('%Y_%m_%d')
filename = date_time +'.txt'

with open(filename,'w',encoding='utf8') as f:
    f.write('城市:'+city +'\n')
    f.write('溫度:'+wendu +'\n')
    f.write('溼度:'+str(shidu) +'\n')
    f.write('風力:'+ fengli +'\n')
    f.write('風向:'+ fengxiang +'\n')
    f.write('空氣質量:'+quality +'\n')
    f.write('PM2.5:'+pm25 +'\n')
####下面是界面程序
gui =Tk()
gui.title("天氣查詢 by 劉雲飛")
gui.geometry('400x320')

l_da = Label(gui,text="日期:"+date_time,font = 'Helvetica -18')
l_da.pack(side = TOP)
l_chengshi = Label(gui,text = '城市:'+city,font = 'Arial -18',width = 20,height =1)
l_chengshi.pack(side = TOP)
l_wendu = Label(gui,text = '溫度:'+wendu,font = 'Helvetica -18',width = 20,height =1)
l_wendu.pack(side = TOP)
l_shidu = Label(gui,text = '溼度:'+shidu,font = 'Helvetica -18',width = 20,height =1)
l_shidu.pack(side = TOP)
l_fengx = Label(gui,text = '風向:'+fengxiang,font = 'Helvetica -18',width = 20,height =1)
l_fengx.pack(side = TOP)
l_fengli= Label(gui,text = '風力:'+fengli,font = 'Helvetica -18',width = 20,height =1)
l_fengli.pack(side = TOP)
l_qu = Label(gui,text = '空氣質量:'+quality,font = 'Helvetica -18',width = 20,height =1)
l_qu.pack(side = TOP)
l_pm = Label(gui,text = 'PM2.5:'+pm25,font = 'Helvetica -18',width = 20,height =1)
l_pm.pack(side = TOP)

ref = Button(gui,text = "更新",font = 'Helvetica -18',command = refresh,activeforeground = 'white',\
             activebackground = 'green')
ref.pack(side = TOP)
gui.mainloop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章