python爬取天气并语音播报_【Python3爬虫】自动查询天气并实现语音播报

一、写在前面

之前写过一篇用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地址和所在地理位置信息了。因为我们可以请求一下这个网页,然后对返回的结果进行一下解析,就能得到我们想要的结果了。代码如下:

1 """

2 Version: Python3.53 Author: OniOn4 Site: http://www.cnblogs.com/TM0831/5 Time: 2019/2/9 16:466 """

7 importre8 importrequests9

10

11 #获取本机IP和地理位置

12 defget_ip():13 res = requests.get("http://www.ip.cn")14 result = re.findall("

您现在的 IP:(.*?)

所在地理位置:(.*?)", res.text)15 ip, address = "", ""

16 iflen(result):17 ip = result[0][0] #IP地址

18 address = result[0][1].split(' ')[0] #地理位置

19 else:20 print("Error!")21 exit()22 return ip, address

(2)get_mp3.py

这里需要使用百度云,没有账号的需要先注册一下,然后搜索一下百度语音,再创建一个应用,如下:

这里AppID、API Key和Secret Key在后面都需要用到,具体使用方法参见官方文档。这里还需要安装一个第三方库:baidu-aip,可以使用pip install baidu-aip进行下载安装。

下面是一个调用百度语音接口的示例:

1 from aip importAipSpeech2

3 """你的 APPID AK SK"""

4 APP_ID = '你的 App ID'

5 API_KEY = '你的 Api Key'

6 SECRET_KEY = '你的 Secret Key'

7

8 client =AipSpeech(APP_ID, API_KEY, SECRET_KEY)9 result = client.synthesis('你好百度', 'zh', 1, {10 'vol': 5,11 })12

13 #识别正确返回语音二进制 错误则返回dict

14 if notisinstance(result, dict):15 with open('auido.mp3', 'wb') as f:16 f.write(result)

其中synthesis方法的各参数含义如下:

有了这个例子,做起来就简单多了,只需要将天气预报的文本传入进去就行了,然后我们可以根据自己喜好改变一下其他参数。代码如下:

1 """

2 Version: Python3.53 Author: OniOn4 Site: http://www.cnblogs.com/TM0831/5 Time: 2019/2/9 17:536 """

7 from aip importAipSpeech8

9 #你的APP_ID,API_KEY,SECRET_KEY

10 APP_ID = ""

11 API_KEY = “"12 SECRET_KEY = ""

13

14

15 #获取语音文件

16 defget_mp3(text):17 client =AipSpeech(APP_ID, API_KEY, SECRET_KEY)18

19 result = client.synthesis(text, 'zh', 1, {"spd": 4, "vol": 6})20

21 #识别正确返回语音二进制,错误则返回dict

22 if notisinstance(result, dict):23 with open('weather.mp3', 'wb') as f:24 f.write(result)25 else:26 print("Error!")27 exit()

三、运行结果

首先是的代码运行的结果,如下图:

然后会生成一个weather.mp3文件:

最后会播放这个MP3文件。

完整代码已上传到GitHub!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值