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进行稳定可靠的文件操作详解
Dec 31 Python
Python获取Linux系统下的本机IP地址代码分享
Nov 07 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
python机器学习之神经网络(二)
Dec 20 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
Python查找文件中包含中文的行方法
Dec 19 Python
python实现一个简单的udp通信的示例代码
Feb 01 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
python爬虫模拟浏览器的两种方法实例分析
Dec 09 Python
python编程进阶之异常处理用法实例分析
Feb 21 Python
Python如何重新加载模块
Jul 29 Python
pytorch使用horovod多gpu训练的实现
Sep 09 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
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
如何解决.vue文件url引用文件的问题
2019/01/18 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
总结python中pass的作用
2019/02/27 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python写程序统计词频的方法
2019/07/29 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
什么是python的列表推导式
2020/05/26 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
车间主管岗位职责
2013/11/14 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
全国道德模范事迹
2014/02/01 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
delete in子查询不走索引问题分析
2022/07/07 MySQL