python十行代码批量下载百度翻译语音

文章介绍了如何通过检查网页HTTP请求并解析URL参数,使用Python代码批量下载百度翻译的单词注音MP3文件。通过替换文本内容,调整语音速度和类型,可以对TXT文件中的多条文本进行处理,生成的MP3文件与文本同名。同时,文中提示了为避免IP封锁可采用的策略。
摘要由CSDN通过智能技术生成

前言

相信有很多人在使用百度翻译的时候会感到这样的疑惑,我该怎样把下图中单词的注音下载下来,那么今天我就教大家如何从下载单个语音到批量下载语音。

在这里插入图片描述

思路

首先我们的行为是在网页上浏览,然后点击语音按钮获取生成的语音,那么这个语音是肯定通过http发送过来的,只要检查网络传输即可。我们先鼠标右键页面空白处,选择“检查”(一般在菜单最下面),打开网页元素的控制台,选中网络,然后我们点击一下语音播放按钮,再点击按类型排序找到media,就可以看到我们获取的资源哩:
在这里插入图片描述
然后我们选中getts的其中一条,右键复制链接地址如下:
https://fanyi.baidu.com/gettts?lan=en&text=come%20on&spd=3&source=web
分析可以发现
lan控制的是英音美音,
text是你输入的文本,
%20表示文本中的空格,
spd表示生成语音的速度,
source表示来源。

然后我们把该链接复制到地址栏,会发现自动下载了该条语音的mp3。那么也就是说只要替换输入的文本,再添加一点小细节,咱们就可以批量下载了。

代码实现

接下来给出实现代码的简单方法,包含从txt一行一行读取文本,配置速度和语音类型,然后文件会以文本名+.mp3的形式保存在同一目录。

import urllib.request
import re
with open('test.txt') as file:
    list_url = [line.rstrip() for line in file]
spd = '2' #default is 3 数字越小越慢
lan = 'uk' #uk or en uk英音 en美音
for i in list_url:
    text = re.sub("\s+", "%20", i.strip())
    print(text)
    urllib.request.urlretrieve("https://fanyi.baidu.com/gettts?lan="+lan+"&text="+text+"&spd="+spd+"&source=web",i+".mp3")

比如我这里准备好了测试文本test.txt:
在这里插入图片描述
把以上代码复制保存在xxx.py,然后命令行运行python xxx.py即可生成以下结果:
在这里插入图片描述
考虑到短时间大量下载可能造成封锁ip不响应,可以添加sleep语句来缓解执行速度,添加user-header模拟浏览器行为等等,就不说了,都是爬虫的一些简单技巧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值