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 相关文章推荐
Python3.2模拟实现webqq登录
Feb 15 Python
浅析Python 中整型对象存储的位置
May 16 Python
python机器学习实战之K均值聚类
Dec 20 Python
django ajax json的实例代码
May 29 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
Oct 09 Python
python内置数据类型之列表操作
Nov 12 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
python随机模块random的22种函数(小结)
May 15 Python
Python如何把十进制数转换成ip地址
May 25 Python
解决运行出现'dict' object has no attribute 'has_key'问题
Jul 15 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 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
几种显示数据的方法的比较
2006/10/09 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
基于jQuery的日期选择控件
2009/10/27 Javascript
javascript实现将文件保存到本地方法汇总
2015/07/26 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
医药销售求职信范文
2014/02/01 职场文书
环保建议书
2014/03/12 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
平安校园建设方案
2014/05/02 职场文书
商场租赁意向书
2014/07/30 职场文书
贷款委托书怎么写
2014/08/02 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
golang 语言中错误处理机制
2021/08/30 Golang
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js