- 访问 url
- 通过 url 获取 html
- 直接用 requests.get 会失败, 需要等待页面的 javascript 加载
- 用 selenium WebDriverWait 等待加载完毕
- 直接获取全部曲风分页url很快会被封禁
- 先访问曲风url, 再用selenium模拟点击进入全部曲风分页url
- 通过 html 获取 songid
- html 中的歌曲信息格式
<a href="/song/fO7s7a822">无地自容</a>
- 通过正则表达式解析
'<a href="/song/([^"]+?)">'
- 直接访问歌单页面同样会被封禁
- 进入虾米主页 https://www.xiami.com/
- 用 selenium 模拟点击歌单
- 用 selenium 模拟点击全部歌单
- 用 selenium 模拟选择语种/华语, 点击
- 用 selenium 模拟点击各个歌单, 进入歌单页面
- 通过正则表达式解析获取歌曲id
- 歌曲id fO7s7a822
- 歌曲url https://www.xiami.com/song/fO7s7a822
- 直接用 youtube-dl 可以下载歌曲,
youtube-dl --quiet --extract-audio 'https://www.xiami.com/song/fO7s7a822' -o 'fO7s7a822.%(ext)s'
下载到 f07s7a822.mp3
- 通过 parallel 可以实现并行下载
- centos
- python3
- 配置
sh env.sh
# 曲风歌曲id写入txts
python3 genre.py
# 歌单歌曲id写入txts
python3 collect.py
# 根据txts下载音乐到mp3s
sh get_mp3.sh