目录
前言
猫耳FM一般被称作“M站”,平台内容以女性向为主,覆盖了有声漫、广播剧、翻唱、电台等二次元及泛二次元的声音内容,是一个专注于ACG相关内容的二次元音频社区。
今天,它将是我们的受害者○( ^皿^)っHiahiahia…
本文知识点
- 1、函数构造与调用
- 2、多层数据解析
- 3、海量音频数据保存
环境与库
- python 3.8
- pycharm专业版
- requests
- re
- os
实现步骤
- 1.获取每个音频的id
- 2.通过id拼接音频详情页地址
- 3.请求地址获取json数据
- 4.解析json数据获取音频地址
- 5.保存音频并以其名称命名
代码实现
导入相关模块
import requests
import re
import os
解析网页
def get_html(url):
headers = {
'Cookie': 'acw_tc=2f624a5917044582169955929e19a14ec0e690ecccc374f6f37cab9d2758df; MSESSID=4efr9ap4gadb2s08pdiq129q73; Hm_lvt_91a4e950402ecbaeb38bd149234eb7cc=1704458226; Hm_lpvt_91a4e950402ecbaeb38bd149234eb7cc=1704458285',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
return response
获取音频id
网页右键查看网页源代码找到音频详情页地址,并使用re正则解析出其id
def get_ids(response):
mp3_ids = re.findall('<a target="_player" href="/sound/(.*?)" title=".*?">', response.text)
return mp3_ids
解析json数据获取音频下载链接
def get_sound(response):
json_data = response.json()
title = json_data['info']['sound']['soundstr'] # 标题
sound_url = json_data['info']['sound']['soundurl'] # 音频下载链接
return title, sound_url
下载保存并命名
def save(title, mp3_data):
with open('mp3\\' + title + '.m4a', mode='wb') as f:
f.write(mp3_data)
print(title, '下载完成!')
函数整体调用
def run(url):
response = get_html(url)
mp3_ids = get_ids(response)
for mp3_id in mp3_ids:
mp3_url = 'https://www.missevan.com/sound/getsound?soundid=' + mp3_id
response_1 = get_html(mp3_url)
title, sound_url = get_sound(response_1)
# title = change_title(title)
# print(sound_url)
mp3_data = get_html(sound_url).content
save(title, mp3_data)
run('https://www.missevan.com/sound/m/110')
最终效果展示
什么?!当女友假装病娇对你用手铐,发现弄疼你后道歉 。好好好,今晚就梦这个!!!