使用Python下载Voxforge语音文件


由于做语音识别需要在使用voxforge的语音文件,但是voxforge文件太多,手工下载肯定不行,可以使用批量下载软件进行下载。而出于好奇,我打算用python自己写一个批量下载脚本,最后虽然能用,但速度不行,而且是单线程的,只能一个文件一个文件的下,就当当作练练手,过一阵再研究多线程的下载。

因此,只需要把整个源代码中包含href=”********.tgz”的部分提取出来,然后去掉“href=”””,然后在前面加上上面的主连接就是每个文件的完整连接。

 

好,不多说了,源码如下,写得很不规范,将就看吧。

import urllib
import urllib2
import os
import re 
os.chdir('D:\voxforge speech files\')#改变当前路径
#refiles=open('speech_files_path.txt','w+')#存储所有下载连接
mainpath='http://www.repository.voxforge1.org/downloads/SpeechCorpus/Trunk/Audio/Main/16kHz_16bit/'
def gettgz(url):  
    page=urllib.urlopen(url)  
    html=page.read()  
    reg=r'href=.*.tgz'  
    tgzre=re.compile(reg)  
    tgzlist=re.findall(tgzre,html)  #找到所有.tgz文件
    for i in tgzlist:
        filename=i.replace('href=','')
        filename=filename.replace('','')
        print '正在下载:'+filename #提示正在下载的文件
        downfile=i.replace('href=',mainpath)
        downfile=downfile.replace('','') #得到每个文件的完整连接
        req = urllib2.Request(downfile)  #下载文件 
        ur = urllib2.urlopen(req).read()
        open(filename,'wb').write(ur) #把下载的文件以tgz格式存储在D盘
    #    refiles.write(downfile+'
')
html=gettgz(mainpath)  
#refiles.close()

 

运行效果如下:

\

\

 

评论关闭