Python3爬蟲(chóng)之自動(dòng)查詢(xún)天氣并實(shí)現(xiàn)語(yǔ)音播報(bào)
一、寫(xiě)在前面
之前寫(xiě)過(guò)一篇用Python發(fā)送天氣預(yù)報(bào)郵件的博客,但是因?yàn)橐謩?dòng)輸入城市名稱(chēng),還要打開(kāi)郵箱才能知道天氣情況,這也太麻煩了。于是乎,有了這一篇博客,這次我要做的就是用Python獲取本機(jī)IP地址,并根據(jù)這個(gè)IP地址獲取物理位置也就是我所在的城市名稱(chēng),然后用之前的辦法實(shí)現(xiàn)查詢(xún)天氣,再利用百度語(yǔ)音得到天氣預(yù)報(bào)的MP3文件,最后播放,這樣是不是就很方(tou)便(lan)了呢?
二、具體步驟
這次有四個(gè)py文件:get_ip.py,get_wather.py,get_mp3.py和main.py。其中g(shù)et_ip.py實(shí)現(xiàn)了獲取本機(jī)ip地址和物理位置,get_wather.py實(shí)現(xiàn)了根據(jù)物理位置查詢(xún)天氣,get_mp3.py實(shí)現(xiàn)了調(diào)用百度語(yǔ)音API把文本轉(zhuǎn)化成MP3文件,main.py是我們需要運(yùn)行的py文件。這里由于查詢(xún)天氣用的是之前的方法,所以就不需要贅述了,主要說(shuō)一下get_ip.py和get_mp3.py。
(1)get_ip.py
要獲取本機(jī)IP,這里有一個(gè)很簡(jiǎn)單的辦法,就是打開(kāi)這個(gè)網(wǎng)頁(yè):https://www.ip.cn/,打開(kāi)之后就能看到我們的IP地址和所在地理位置信息了。因?yàn)槲覀兛梢哉?qǐng)求一下這個(gè)網(wǎng)頁(yè),然后對(duì)返回的結(jié)果進(jìn)行一下解析,就能得到我們想要的結(jié)果了。代碼如下:
"""
Version: Python3.5
Author: OniOn
Site: http://www.cnblogs.com/TM0831/
Time: 2019/2/9 16:46
"""
import re
import requests
# 獲取本機(jī)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
這里需要使用百度云,沒(méi)有賬號(hào)的需要先注冊(cè)一下,然后搜索一下百度語(yǔ)音,再創(chuàng)建一個(gè)應(yīng)用,如下:

這里AppID、API Key和Secret Key在后面都需要用到,具體使用方法參見(jiàn)官方文檔。這里還需要安裝一個(gè)第三方庫(kù):baidu-aip,可以使用pip install baidu-aip進(jìn)行下載安裝。
下面是一個(gè)調(diào)用百度語(yǔ)音接口的示例:
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,
})
# 識(shí)別正確返回語(yǔ)音二進(jìn)制 錯(cuò)誤則返回dict
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
其中synthesis方法的各參數(shù)含義如下:

有了這個(gè)例子,做起來(lái)就簡(jiǎn)單多了,只需要將天氣預(yù)報(bào)的文本傳入進(jìn)去就行了,然后我們可以根據(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 = ""
# 獲取語(yǔ)音文件
def get_mp3(text):
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis(text, 'zh', 1, {"spd": 4, "vol": 6})
# 識(shí)別正確返回語(yǔ)音二進(jìn)制,錯(cuò)誤則返回dict
if not isinstance(result, dict):
with open('weather.mp3', 'wb') as f:
f.write(result)
else:
print("Error!")
exit()
三、運(yùn)行結(jié)果
首先是的代碼運(yùn)行的結(jié)果,如下圖:

然后會(huì)生成一個(gè)weather.mp3文件:

最后會(huì)播放這個(gè)MP3文件。
完整代碼已上傳到GitHub!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python天氣預(yù)報(bào)采集器實(shí)現(xiàn)代碼(網(wǎng)頁(yè)爬蟲(chóng))
- Python爬蟲(chóng)天氣預(yù)報(bào)實(shí)例詳解(小白入門(mén))
- Python爬蟲(chóng)實(shí)例扒取2345天氣預(yù)報(bào)
- 用python爬取歷史天氣數(shù)據(jù)的方法示例
- Python爬取國(guó)外天氣預(yù)報(bào)網(wǎng)站的方法
- python3爬取各類(lèi)天氣信息
- python可視化爬蟲(chóng)界面之天氣查詢(xún)
- python爬取天氣數(shù)據(jù)的實(shí)例詳解
- 基于Python爬蟲(chóng)采集天氣網(wǎng)實(shí)時(shí)信息
- 如何利用python多線程爬取天氣網(wǎng)站圖片并保存
相關(guān)文章
python機(jī)器學(xué)習(xí)基礎(chǔ)K近鄰算法詳解KNN
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)基礎(chǔ)K近鄰算法詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11
以tensorflow庫(kù)為例講解Pycharm中如何更新第三方庫(kù)
這篇文章主要介紹了以tensorflow庫(kù)為例講解Pycharm中如何更新第三方庫(kù),文章介紹有詳細(xì)流程,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)工作有所幫助2022-03-03
Python with語(yǔ)句上下文管理器兩種實(shí)現(xiàn)方法分析
這篇文章主要介紹了Python with語(yǔ)句上下文管理器兩種實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python上下文管理器的相關(guān)概念、功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-02-02
Python全面分析系統(tǒng)的時(shí)域特性和頻率域特性
今天小編就為大家分享一篇Python全面分析系統(tǒng)的時(shí)域特性和頻率域特性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
python利用opencv調(diào)用攝像頭實(shí)現(xiàn)目標(biāo)檢測(cè)
這篇文章主要為大家介紹了python利用opencv調(diào)用攝像頭實(shí)現(xiàn)目標(biāo)檢測(cè)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python實(shí)現(xiàn)圖片滑動(dòng)式驗(yàn)證識(shí)別方法
驗(yàn)證碼作為一種自然人的機(jī)器人的判別工具,被廣泛的用于各種防止程序做自動(dòng)化的場(chǎng)景中。這篇文章主要介紹了Python實(shí)現(xiàn)圖片滑動(dòng)式驗(yàn)證識(shí)別方法,需要的朋友可以參考下2017-11-11

