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 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
通过源码分析Python中的切片赋值
May 08 Python
高效使用Python字典的清单
Apr 04 Python
python的格式化输出(format,%)实例详解
Jun 01 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
Python进程间通信 multiProcessing Queue队列实现详解
Sep 23 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 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
海贼王:最美的悬赏令!
2020/03/02 日漫
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
坏狼php学习 计数器实例代码
2008/06/15 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
python中的列表与元组的使用
2019/08/08 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
业务主管岗位职责
2013/11/20 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
践行三严三实心得体会
2014/10/13 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS
vue实现移动端div拖动效果
2022/03/03 Vue.js