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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python算术运算符实例详解
May 31 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python读取LMDB中图像的方法
Jul 02 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
Django 大文件下载实现过程解析
Aug 01 Python
Python 调用 Windows API COM 新法
Aug 22 Python
从pandas一个单元格的字符串中提取字符串方式
Dec 17 Python
python和c语言哪个更适合初学者
Jun 22 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
如何用 Python 制作一个迷宫游戏
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写出自己的BLOG系统 2
2010/04/12 PHP
php遍历数组的方法分享
2012/03/22 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
js禁止表单重复提交
2017/08/29 Javascript
详解vue-router 路由元信息
2017/09/13 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python实现名片管理系统
2020/02/14 Python
Python 去除字符串中指定字符串
2020/03/05 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
html5清空画布方法(三种)
2017/10/16 HTML / CSS
工程师岗位职责规定
2014/02/26 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
保安2014年终工作总结
2014/12/06 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python
python获取带有返回值的多线程
2022/05/02 Python