如何批量下载维基共享资源中的Lingua Libre音频数据集?
批量下载Wikimedia Commons分类下的Lingua Libre音频数据集方法
以下是几种实用的批量下载方案,无需逐个点击下载:
1. 利用Wikimedia API + 脚本批量处理
步骤1:获取分类下的所有文件列表
用curl请求API获取该分类的文件条目(最多一次返回500条,若文件更多可通过cmcontinue参数分页获取):
curl "https://commons.wikimedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Lingua_Libre_pronunciation-ory&cmtype=file&cmlimit=500&format=json" > files.json
执行后会得到一个包含所有文件标题的JSON文件。
步骤2:编写脚本批量下载
用Python脚本读取文件列表,自动请求每个文件的下载链接并保存:
import json import requests # 加载文件列表 with open('files.json', 'r', encoding='utf-8') as f: data = json.load(f) # 提取所有文件标题 file_titles = [item['title'] for item in data['query']['categorymembers']] # 批量下载 for idx, title in enumerate(file_titles, 1): print(f"正在下载第{idx}个文件:{title}") api_url = f"https://commons.wikimedia.org/w/api.php?action=query&titles={title}&prop=imageinfo&iiprop=url&format=json" try: response = requests.get(api_url, timeout=10) response.raise_for_status() info = response.json() page_data = next(iter(info['query']['pages'].values())) download_url = page_data['imageinfo'][0]['url'] filename = download_url.split('/')[-1] # 保存文件 with open(filename, 'wb') as f: f.write(requests.get(download_url, timeout=15).content) except Exception as e: print(f"下载{title}失败:{str(e)}")
2. 使用第三方批量下载工具
借助专门的Wikimedia文件下载工具,操作更简便:
- 先安装Python包
wikimedia-downloader:
pip install wikimedia-downloader
- 直接运行命令下载整个分类的文件到指定目录:
wikimedia-downloader --category "Lingua_Libre_pronunciation-ory" --output-dir "./lingua_libre_audio"
工具会自动处理分类下的所有文件,包括子分类(若有)。
3. 手动导出列表+批量下载工具
如果不想写脚本,也可以手动操作:
- 打开目标分类页面,滚动到页面底部,点击「导出」(Export)选项,选择导出CSV格式的文件列表。
- 用表格工具或文本编辑器提取所有文件的下载URL(Wikimedia文件下载URL格式为
https://upload.wikimedia.org/wikipedia/commons/[首字母]/[前两字母]/[文件名],可根据文件名拼接)。 - 将所有URL整理到一个文本文件(如
urls.txt),用wget或IDM等批量下载工具执行:
wget -i urls.txt
内容的提问来源于stack exchange,提问作者Mudit
相关产品推荐
相关产品推荐

