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的Django框架上部署ORM库的教程
Apr 20 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
Django组件cookie与session的具体使用
Jun 05 Python
Django 拆分model和view的实现方法
Aug 16 Python
Python序列类型的打包和解包实例
Dec 21 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python实现验证码识别
Jun 15 Python
python脚本和网页有何区别
Jul 02 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
js实现一个简易计算器
2020/03/30 Javascript
python 提取文件的小程序
2009/07/29 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
python的setattr函数实例用法
2020/12/16 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
什么是反射?如何实现反射?
2016/07/25 面试题
党员党性分析材料
2014/02/17 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
道歉信怎么写
2015/05/12 职场文书
初中语文教学研修日志
2015/11/13 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
Python时间操作之pytz模块使用详解
2022/06/14 Python
阿里面试Nacos配置中心交互模型是push还是pull原理解析
2022/07/23 Java/Android