Python3爬蟲之自動查詢天氣并實現(xiàn)語音播報
一、寫在前面
之前寫過一篇用Python發(fā)送天氣預報郵件的博客,但是因為要手動輸入城市名稱,還要打開郵箱才能知道天氣情況,這也太麻煩了。于是乎,有了這一篇博客,這次我要做的就是用Python獲取本機IP地址,并根據(jù)這個IP地址獲取物理位置也就是我所在的城市名稱,然后用之前的辦法實現(xiàn)查詢天氣,再利用百度語音得到天氣預報的MP3文件,最后播放,這樣是不是就很方(tou)便(lan)了呢?
二、具體步驟
這次有四個py文件:get_ip.py,get_wather.py,get_mp3.py和main.py。其中g(shù)et_ip.py實現(xiàn)了獲取本機ip地址和物理位置,get_wather.py實現(xiàn)了根據(jù)物理位置查詢天氣,get_mp3.py實現(xiàn)了調(diào)用百度語音API把文本轉(zhuǎn)化成MP3文件,main.py是我們需要運行的py文件。這里由于查詢天氣用的是之前的方法,所以就不需要贅述了,主要說一下get_ip.py和get_mp3.py。
(1)get_ip.py
要獲取本機IP,這里有一個很簡單的辦法,就是打開這個網(wǎng)頁:https://www.ip.cn/,打開之后就能看到我們的IP地址和所在地理位置信息了。因為我們可以請求一下這個網(wǎng)頁,然后對返回的結(jié)果進行一下解析,就能得到我們想要的結(jié)果了。代碼如下:
""" Version: Python3.5 Author: OniOn Site: http://www.cnblogs.com/TM0831/ Time: 2019/2/9 16:46 """ import re import requests # 獲取本機IP和地理位置 def get_ip(): res = requests.get("http://www.ip.cn") result = re.findall("<p>您現(xiàn)在的 IP:<code>(.*?)</code></p><p>所在地理位置:<code>(.*?)</code>", res.text) ip, address = "", "" if len(result): ip = result[0][0] # IP地址 address = result[0][1].split(' ')[0] # 地理位置 else: print("Error!") exit() return ip, address
(2)get_mp3.py
這里需要使用百度云,沒有賬號的需要先注冊一下,然后搜索一下百度語音,再創(chuàng)建一個應用,如下:
這里AppID、API Key和Secret Key在后面都需要用到,具體使用方法參見官方文檔。這里還需要安裝一個第三方庫:baidu-aip,可以使用pip install baidu-aip進行下載安裝。
下面是一個調(diào)用百度語音接口的示例:
from aip import AipSpeech """ 你的 APPID AK SK """ APP_ID = '你的 App ID' API_KEY = '你的 Api Key' SECRET_KEY = '你的 Secret Key' client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis('你好百度', 'zh', 1, { 'vol': 5, }) # 識別正確返回語音二進制 錯誤則返回dict if not isinstance(result, dict): with open('auido.mp3', 'wb') as f: f.write(result)
其中synthesis方法的各參數(shù)含義如下:
有了這個例子,做起來就簡單多了,只需要將天氣預報的文本傳入進去就行了,然后我們可以根據(jù)自己喜好改變一下其他參數(shù)。代碼如下:
""" Version: Python3.5 Author: OniOn Site: http://www.cnblogs.com/TM0831/ Time: 2019/2/9 17:53 """ from aip import AipSpeech # 你的APP_ID,API_KEY,SECRET_KEY APP_ID = "" API_KEY = “" SECRET_KEY = "" # 獲取語音文件 def get_mp3(text): client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) result = client.synthesis(text, 'zh', 1, {"spd": 4, "vol": 6}) # 識別正確返回語音二進制,錯誤則返回dict if not isinstance(result, dict): with open('weather.mp3', 'wb') as f: f.write(result) else: print("Error!") exit()
三、運行結(jié)果
首先是的代碼運行的結(jié)果,如下圖:
然后會生成一個weather.mp3文件:
最后會播放這個MP3文件。
完整代碼已上傳到GitHub!
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python實現(xiàn)subprocess執(zhí)行外部命令
Python使用最廣泛的是標準庫的subprocess模塊,使用subprocess最簡單的方式就是用它提供的便利函數(shù),因此執(zhí)行外部命令優(yōu)先使用subprocess模塊,下面就一起來了解一下如何使用2021-05-05python 進制轉(zhuǎn)換 int、bin、oct、hex的原理
這篇文章主要介紹了python 進制轉(zhuǎn)換 int、bin、oct、hex的原理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir()
這篇文章主要介紹了Python寫的創(chuàng)建文件夾自定義函數(shù)mkdir(),文件夾操作是編程中經(jīng)常需要的,mkdir函數(shù)更是經(jīng)典中的經(jīng)典,需要的朋友可以參考下2014-08-08python創(chuàng)建exe文件的實現(xiàn)步驟
本文主要介紹了python創(chuàng)建exe文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09

學點簡單的Django之第一個Django程序的實現(xiàn)

Python使用pyautogui模塊實現(xiàn)自動化鼠標和鍵盤操作示例