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自动化构建工具scons使用入门笔记
Mar 10 Python
Python单链表简单实现代码
Apr 27 Python
使用Python对Access读写操作
Mar 30 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
解决python中无法自动补全代码的问题
Dec 04 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
Python设计模式之代理模式实例详解
Jan 19 Python
python 日期排序的实例代码
Jul 11 Python
Python高级property属性用法实例分析
Nov 19 Python
python关于调用函数外的变量实例
Dec 26 Python
Python 可迭代对象 iterable的具体使用
Aug 07 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
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP pear安装配置教程
2016/05/14 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
2016/05/12 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
Python装饰器知识点补充
2018/05/28 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python绘制玫瑰的实现代码
2020/03/02 Python
详解Anaconda 的安装教程
2020/09/23 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
Java基础知识面试要点
2016/07/29 面试题
大学生大二自我鉴定
2013/10/28 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
医院保洁服务方案
2014/06/11 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书