利用Python制作一個簡單的天氣播報系統

前言

大傢好,我是辣條

相信大傢都能感覺到最近天氣的多變,好幾次出門半路天氣轉變。辣條也深受其擾,直接給我整感冒,就差被隔離起來瞭,既然天氣我沒法做主,那不如用python整個天氣爬蟲來獲取天氣情況。這樣也好可以進行一個提前預防

工具

python3.7

pycharm

pyttsx3:語音播報庫

天氣數據來源

找尋一個天氣網站

比如說我們要查詢某地的天氣,在輸入地名後就能看到結果。

我們可以看到網站的url會有變化:

每個城市的天氣信息url就是在網站後面加上城市拼音,既然如此可以使用函數形參來解決城市輸入問題。

代碼實現

# 獲取天氣的方法
def get_weather(city):
    # 天氣的網站網址  字符串
    url = 'https://www.tianqi.com/' + city + '/'

    # 偽裝瀏覽器的馬甲
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.58'
    }

    # 發起網絡請求並獲取網頁代碼
    website = requests.get(url=url, headers=headers)

    data = etree.HTML(website.text)     # 數據預處理
	#xpath解析頁面天氣數據
    weather_list = data.xpath('//dl[@class="weather_info"]//text()')


    weather_text = '歡迎使用天氣播報助手,以下是你想要瞭解的城市天氣:\n'

    for text in weather_list:
        weather_text += text
        if weather_text.find('[切換城市]'):
            weather_text = weather_text.strip('[切換城市]')

    print(weather_text)
    return weather_text

這樣就通過爬蟲就獲取到瞭每個城市的天氣數據,再通過pyttsx3構建出語音對象實例,將天氣文本放進去運行就可以瞭。

if __name__ == '__main__':
    city = input('請輸入您的城市,例如長沙:changsha-->').strip()
    weather_info = get_weather(city)        # weather_info來獲取抓取到的天氣文字
    weather = pyttsx3.init()            # 初始化說話的對象
    weather.say(weather_info)           # 設置說話內容
    weather.runAndWait()                # 開始執行說話的操作

總結

這才是物理階層的未雨綢繆,貫穿用魔法打敗魔法的原理~ 哈哈哈

到此這篇關於利用Python制作一個簡單的天氣播報系統的文章就介紹到這瞭,更多相關Python天氣播報系統內容請搜索LevelAH以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持LevelAH!

推薦閱讀: