zhai男福利!Python爬取猫耳FM音频,一场酣畅淋漓的听觉盛宴!!!

目录

前言

本文知识点

 环境与库

 实现步骤

代码实现 

导入相关模块

解析网页

获取音频id

解析json数据获取音频下载链接

下载保存并命名

函数整体调用

最终效果展示


前言

猫耳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')

最终效果展示

什么?!当女友假装病娇对你用手铐,发现弄疼你后道歉 。好好好,今晚就梦这个!!!

  • 32
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是Python八卦迷宫的代码实现: ```python # 定义迷宫地图 maze = [ ['*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*'], ['*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', ' ', '*'], ['*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', '*', ' ', ' ', ' ', ' ', '*', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', ' ', '*', '*', '*', '*', ' ', '*', '*', '*', '*', ' ', '*', ' ', '*', '*', '*', '*'], ['*', ' ', '*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*', ' ', '*', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', '*', '*', '*', '*', '*', ' ', '*', ' ', '*', '*', '*', '*', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', '*', ' ', ' ', ' ', ' ', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', '*', ' ', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', ' ', '*'], ['*', ' ', '*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', ' ', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', ' ', '*'], ['*', ' ', '*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', ' ', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', ' ', '*'], ['*', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '*'], ['*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*', '*'] ] # 定义起点和终点 start = (1, 1) end = (17, 17) # 定义方向 directions = [(0, 1), (0, -1), (1, 0), (-1, 0)] # 定义拼音字符 pinyin = ['ba', 'bi', 'bo', 'bu', 'ca', 'ci', 'cu', 'cha', 'che', 'chi', 'cho', 'chu', 'da', 'de', 'di', 'du', 'duo', 'e', 'en', 'er', 'fa', 'fo', 'fu', 'ga', 'ge', 'gu', 'gua', 'guai', 'gui', 'gun', 'ha', 'he', 'hei', 'hen', 'heng', 'hong', 'hou', 'hu', 'hua', 'huai', 'huan', 'huang', 'hui', 'hun', 'huo', 'ji', 'jia', 'jian', 'jiang', 'jiao', 'jie', 'jin', 'jing', 'jiong', 'jiu', 'ju', 'juan', 'jue', 'jun', 'ka', 'ke', 'kai', 'kan', 'kang', 'kao', 'kei', 'ken', 'keng', 'kong', 'kou', 'ku', 'kua', 'kuai', 'kuan', 'kuang', 'kui', 'kun', 'kuo', 'la', 'lai', 'lan', 'lang', 'lao', 'le', 'lei', 'leng', 'li', 'lia', 'lian', 'liang', 'liao', 'lie', 'lin', 'ling', 'liu', 'lo', 'long', 'lou', 'lu', 'lv', 'luan', 'lue', 'lun', 'luo', 'ma', 'mai', 'man', 'mang', 'mao', 'me', 'mei', 'men', 'meng', 'mi', 'mian', 'miao', 'mie', 'min', 'ming', 'miu', 'mo', 'mou', 'mu', 'na', 'nai', 'nan', 'nang', 'nao', 'ne', 'nei', 'nen', 'neng', 'ni', 'nian', 'niang', 'niao', 'nie', 'nin', 'ning', 'niu', 'nong', 'nu', 'nv', 'nuan', 'nue', 'nuo', 'o', 'ou', 'pa', 'pai', 'pan', 'pang', 'pao', 'pei', 'pen', 'peng', 'pi', 'pian', 'piao', 'pie', 'pin', 'ping', 'po', 'pou', 'pu', 'qi', 'qia', 'qian', 'qiang', 'qiao', 'qie', 'qin', 'qing', 'qiong', 'qiu', 'qu', 'quan', 'que', 'qun', 'ran', 'rang', 'rao', 're', 'ren', 'reng', 'ri', 'rong', 'rou', 'ru', 'rua', 'ruan', 'rui', 'run', 'ruo', 'sa', 'sai', 'san', 'sang', 'sao', 'se', 'sen', 'seng', 'sha', 'shai', 'shan', 'shang', 'shao', 'she', 'shei', 'shen', 'sheng', 'shi', 'shou', 'shu', 'shua', 'shuai', 'shuan', 'shuang', 'shui', 'shun', 'shuo', 'si', 'song', 'sou', 'su', 'suan', 'sui', 'sun', 'suo', 'ta', 'tai', 'tan', 'tang', 'tao', 'te', 'teng', 'ti', 'tian', 'tiao', 'tie', 'ting', 'tong', 'tou', 'tu', 'tuan', 'tui', 'tun', 'tuo', 'wa', 'wai', 'wan', 'wang', 'wei', 'wen', 'weng', 'wo', 'wu', 'xi', 'xia', 'xian', 'xiang', 'xiao', 'xie', 'xin', 'xing', 'xiong', 'xiu', 'xu', 'xuan', 'xue', 'xun', 'ya', 'yan', 'yang', 'yao', 'ye', 'yi', 'yin', 'ying', 'yo', 'yong', 'you', 'yu', 'yuan', 'yue', 'yun', 'za', 'zai', 'zan', 'zang', 'zao', 'ze', 'zei', 'zen', 'zeng', 'zha', 'zhai', 'zhan', 'zhang', 'zhao', 'zhe', 'zhei', 'zhen', 'zheng', 'zhi', 'zhong', 'zhou', 'zhu', 'zhua', 'zhuai', 'zhuan', 'zhuang', 'zhui', 'zhun', 'zhuo', 'zi', 'zong', 'zou', 'zu', 'zuan', 'zui', 'zun', 'zuo'] # 定义拼音字符的索引 pinyin_index = 0 # 定义当前位置和当前方向 current_pos = start current_direction = 0 # 定义拼音字符串 result = '' # 循环走迷宫 while current_pos != end: # 获取当前位置的坐标 x, y = current_pos # 判断当前位置是否为拐点 if maze[x][y] == ' ' and (maze[x + directions[current_direction][0]][y + directions[current_direction][1]] == '*' or maze[x + directions[current_direction][0]][y + directions[current_direction][1]] == ' '): # 拼接拼音字符 result += pinyin[pinyin_index] pinyin_index = (pinyin_index + 1) % len(pinyin) # 判断当前位置是否为死路 if maze[x + directions[current_direction][0]][y + directions[current_direction][1]] == '*': # 改变方向 current_direction = (current_direction + 1) % 4 # 改变位置 current_pos = (x + directions[current_direction][0], y + directions[current_direction][1]) # 输出拼音字符串 print(result) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

到点就困告

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值