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中使用装饰器和元编程实现结构体类实例
Jan 28 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
使用Python为中秋节绘制一块美味的月饼
Sep 11 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 Python
django自带的权限管理Permission用法说明
May 13 Python
详解python的变量缓存机制
Jan 24 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
基于mysql的论坛(5)
2006/10/09 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
js动画(animate)简单引擎代码示例
2012/12/04 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
python集合类型用法分析
2015/04/08 Python
python实现备份目录的方法
2015/08/03 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Python如何生成xml文件
2020/06/04 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
CSS3 边框效果
2019/11/04 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
应届生高等护理求职信
2013/10/12 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
公司总经理岗位职责
2015/04/01 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
字节飞书面试promise.all实现示例
2022/06/16 Javascript