不调用网页内容直接批量爬取MP3音频文件

需求:

根据字典数据表中的汉字读音列表爬取单个字的拼音音频文件

目标网址:

https://hanyu.baidu.com/

网页分析:

F12
因为是音频文件。直接在媒体里面找。点击Media,如果是空白的。点击一下页面小喇叭的地方。会跳出文件。根据头部信息header中的url,转到一看。就是所需要的音频文件。
在这里插入图片描述
在这里插入图片描述
多搜几个几个字,对比找寻文件地址规律。
云:https://fanyiapp.cdn.bcebos.com/zhdict/mp3/yun2.mp3
牛:https://fanyiapp.cdn.bcebos.com/zhdict/mp3/niu2.mp3
。。。。。。
可以发现,url地址中,末尾的yun、niu是汉字的拼音,后面的数字是该字的声调,第几声就是数字几。

爬取思路:

1、连接数据库获取拼音名
2、直接定位在文件url网址,通过循环直接进行下载。不必再进行头部header伪装请求主网页。
3、保存文件

代码实现:

1、连接数据库获取拼音名
在这里插入图片描述
数据库表内容。因为爬取下来的文件存在命名问题,毕竟中文中同音字太多,得加以汉字名字区别。我们需要的是汉字名和拼音名。就是Chinese和nicksounds两部分。所以需要设置多表连接。

#导入数据库
conn = pymysql.connect("localhost", "root", "123456", "sys")
cursor = conn.cursor()
sql = "SELECT chinese,nicksounds FROM cr_dictcnold "
cursor.execute(sql)
results = cursor.fetchall()
print(results)

2、数据库遍历分片提取。因为有些字是多音字,根据数据库中的表单看。查询出来的一个str列表中会存在一个以上的读音。直接根据查询的结果进行网址拼接,多音字会出现错误。

for row in results:
    chinese = row[0]#整个results是一个字符串,第一个元素是汉字,所以取第一个赋值为chinese
    print(chinese)
    yin = row[1]
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值