【Python3爬虫】自动查询天气并实现语音播报
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Python3爬虫】自动查询天气并实现语音播报,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3112字,纯文字阅读大概需要5分钟。
内容图文
![【Python3爬虫】自动查询天气并实现语音播报](/upload/InfoBanner/zyjiaocheng/842/0a84dfb91e7c473f848e27aa898ed18c.jpg)
一、写在前面
之前写过一篇用Python发送天气预报邮件的博客,但是因为要手动输入城市名称,还要打开邮箱才能知道天气情况,这也太麻烦了。于是乎,有了这一篇博客,这次我要做的就是用Python获取本机IP地址,并根据这个IP地址获取物理位置也就是我所在的城市名称,然后用之前的办法实现查询天气,再利用百度语音得到天气预报的MP3文件,最后播放,这样是不是就很方(tou)便(lan)了呢?
二、具体步骤
这次有四个py文件:get_ip.py,get_wather.py,get_mp3.py和main.py。其中get_ip.py实现了获取本机ip地址和物理位置,get_wather.py实现了根据物理位置查询天气,get_mp3.py实现了调用百度语音API把文本转化成MP3文件,main.py是我们需要运行的py文件。这里由于查询天气用的是之前的方法,所以就不需要赘述了,主要说一下get_ip.py和get_mp3.py。
(1)get_ip.py
要获取本机IP,这里有一个很简单的办法,就是打开这个网页:https://www.ip.cn/,打开之后就能看到我们的IP地址和所在地理位置信息了。因为我们可以请求一下这个网页,然后对返回的结果进行一下解析,就能得到我们想要的结果了。代码如下:
1 """ 2 Version: Python3.5 3 Author: OniOn 4 Site: http://www.cnblogs.com/TM0831/ 5 Time: 2019/2/9 16:46 6 """ 7 import re 8 import requests 9 10 11 # 获取本机IP和地理位置 12 def get_ip(): 13 res = requests.get("http://www.ip.cn") 14 result = re.findall("<p>您现在的 IP:<code>(.*?)</code></p><p>所在地理位置:<code>(.*?)</code>", res.text) 15 ip, address = "", "" 16 if len(result): 17 ip = result[0][0] # IP地址 18 address = result[0][1].split(' ')[0] # 地理位置 19 else: 20 print("Error!") 21 exit() 22 return ip, address
(2)get_mp3.py
这里需要使用百度云,没有账号的需要先注册一下,然后搜索一下百度语音,再创建一个应用,如下:
这里AppID、API Key和Secret Key在后面都需要用到,具体使用方法参见官方文档。这里还需要安装一个第三方库:baidu-aip,可以使用pip install baidu-aip进行下载安装。
下面是一个调用百度语音接口的示例:
1 from aip import AipSpeech 2 3 """ 你的 APPID AK SK """ 4 APP_ID = '你的 App ID' 5 API_KEY = '你的 Api Key' 6 SECRET_KEY = '你的 Secret Key' 7 8 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 9 result = client.synthesis('你好百度', 'zh', 1, { 10 'vol': 5, 11 }) 12 13 # 识别正确返回语音二进制 错误则返回dict 14 if not isinstance(result, dict): 15 with open('auido.mp3', 'wb') as f: 16 f.write(result)
其中synthesis方法的各参数含义如下:
有了这个例子,做起来就简单多了,只需要将天气预报的文本传入进去就行了,然后我们可以根据自己喜好改变一下其他参数。代码如下:
1 """ 2 Version: Python3.5 3 Author: OniOn 4 Site: http://www.cnblogs.com/TM0831/ 5 Time: 2019/2/9 17:53 6 """ 7 from aip import AipSpeech 8 9 # 你的APP_ID,API_KEY,SECRET_KEY 10 APP_ID = "" 11 API_KEY = “" 12 SECRET_KEY = "" 13 14 15 # 获取语音文件 16 def get_mp3(text): 17 client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) 18 19 result = client.synthesis(text, 'zh', 1, {"spd": 4, "vol": 6}) 20 21 # 识别正确返回语音二进制,错误则返回dict 22 if not isinstance(result, dict): 23 with open('weather.mp3', 'wb') as f: 24 f.write(result) 25 else: 26 print("Error!") 27 exit()
三、运行结果
首先是的代码运行的结果,如下图:
然后会生成一个weather.mp3文件:
最后会播放这个MP3文件。
完整代码已上传到GitHub!
内容总结
以上是互联网集市为您收集整理的【Python3爬虫】自动查询天气并实现语音播报全部内容,希望文章能够帮你解决【Python3爬虫】自动查询天气并实现语音播报所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。