Python3爬虫之自动查询天气并实现语音播报


Posted in Python onFebruary 21, 2019

一、写在前面

之前写过一篇用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地址和所在地理位置信息了。因为我们可以请求一下这个网页,然后对返回的结果进行一下解析,就能得到我们想要的结果了。代码如下:

"""
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>您现在的 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

这里需要使用百度云,没有账号的需要先注册一下,然后搜索一下百度语音,再创建一个应用,如下:

Python3爬虫之自动查询天气并实现语音播报

这里AppID、API Key和Secret Key在后面都需要用到,具体使用方法参见官方文档。这里还需要安装一个第三方库:baidu-aip,可以使用pip install baidu-aip进行下载安装。

下面是一个调用百度语音接口的示例:

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方法的各参数含义如下:

Python3爬虫之自动查询天气并实现语音播报

有了这个例子,做起来就简单多了,只需要将天气预报的文本传入进去就行了,然后我们可以根据自己喜好改变一下其他参数。代码如下:

"""
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()

三、运行结果

首先是的代码运行的结果,如下图:

Python3爬虫之自动查询天气并实现语音播报

然后会生成一个weather.mp3文件:

Python3爬虫之自动查询天气并实现语音播报

最后会播放这个MP3文件。

完整代码已上传到GitHub!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python海龟绘图实例教程
Jul 24 Python
python实现的简单猜数字游戏
Apr 04 Python
python使用post提交数据到远程url的方法
Apr 29 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
Python实现使用request模块下载图片demo示例
May 24 Python
使用Python画股票的K线图的方法步骤
Jun 28 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
使用tkinter实现三子棋游戏
Feb 25 Python
python 自动批量打开网页的示例
Feb 21 #Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 #Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 #Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 #Python
Python开发网站目录扫描器的实现
Feb 21 #Python
Python爬虫之UserAgent的使用实例
Feb 21 #Python
利用python实现在微信群刷屏的方法
Feb 21 #Python
You might like
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
PHP 一个页面执行时间类代码
2010/03/05 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
Python入门篇之正则表达式
2014/10/20 Python
使用Python绘制图表大全总结
2017/02/11 Python
python机器学习之决策树分类详解
2017/12/20 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
python打开文件的方式有哪些
2020/06/29 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
莫斯科购买书籍网站:Book24
2020/01/12 全球购物
自我鉴定模板
2013/10/29 职场文书
医药个人求职信范文
2014/01/29 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
贺卡寄语大全
2014/04/11 职场文书
最美家庭活动方案
2014/08/31 职场文书
医院合作意向书范本
2015/05/08 职场文书
企业宣传稿范文
2015/07/23 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏