python項目之 天氣 優化版

python項目之 天氣 優化版

抓取的數據源

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

使用的類庫

thinter
requests
beautifulsoup

思路

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

更新的地方

全部封裝爲函數

界面如下

weather

源碼奉上


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

data = {}
URL_short = 'http://wthrcdn.etouch.cn/WeatherApi?citykey='

def city(city = 'shanghai'):
    if(city == 'shanghai'):
        urls = URL_short+'101020100'
    if(city == 'beijin'):
        urls = URL_short+'101010100'
    return urls

def refresh():
    pass
def get_data():
    requests.session()
    r = requests.get(city())
    #print(r.status_code)
    soup = BeautifulSoup(r.text,'lxml')
    #print(soup.prettify())
    a = soup.find_all('city')
    data['city'] = a[0].get_text()
    a = soup.find_all('wendu')
    data['wendu'] = a[0].get_text()
    a = soup.find_all('shidu')
    data['shidu'] = a[0].get_text()
    a = soup.find_all('fengli')
    data['fengli'] = a[0].get_text()
    a = soup.find_all('fengxiang')
    data['fengxiang']  = a[0].get_text()
    a = soup.find_all('quality')
    data['quality']  = a[0].get_text()
    a = soup.find_all('pm25')
    data['pm25']  = a[0].get_text()
    date_time = datetime.datetime.now().strftime('%Y_%m_%d')
    filename = date_time +'.txt'
    data['date_time']  = date_time
    data['filename']  = filename
    return data
def write_data(data):
    with open(data['filename'],'w',encoding='utf8') as f:
        f.write('城市:'+data['city']  +'\n')
        f.write('溫度:'+data['wendu'] +'\n')
        f.write('溼度:'+data['shidu'] +'\n')
        f.write('風力:'+ data['fengli'] +'\n')
        f.write('風向:'+ data['fengxiang'] +'\n')
        f.write('空氣質量:'+data['quality'] +'\n')
        f.write('PM2.5:'+data['pm25'] +'\n')
####下面是界面程序
def gui(data):
    gui =Tk()
    gui.title("天氣查詢 by 劉雲飛")
    gui.geometry('400x320')

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

def main():
    get_data()
    write_data(data)
    gui(data)
    pass
if __name__ == '__main__':
    main()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章