需求:
根据字典数据表中的汉字读音列表爬取单个字的拼音音频文件
目标网址:
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]

最低0.47元/天 解锁文章
3939





