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 相关文章推荐
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
Jun 18 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
理解python正则表达式
Jan 15 Python
Python使用django搭建web开发环境
Jun 09 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
Centos7 下安装最新的python3.8
Oct 28 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
什么是python的列表推导式
May 26 Python
Python3爬虫中Ajax的用法
Jul 10 Python
使用pytorch实现线性回归
Apr 11 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 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
浅析Python中的join()方法的使用
2015/05/19 Python
回调函数的意义以及python实现实例
2017/06/20 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
基于python监控程序是否关闭
2020/01/14 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
python 如何在测试中使用 Mock
2021/03/01 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
实习生自荐信范文分享
2013/11/27 职场文书
幼儿园教师工作制度
2014/01/22 职场文书
师德演讲稿范文
2014/05/06 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL