欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python采集喜马拉雅的音频,随时随地,听我想听

程序员文章站 2022-12-21 13:41:02
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e ......

前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

ps:如有需要python学习资料的小伙伴可以加点击下方链接自行获取

喜马拉雅fm是专业的音频分享平台,汇集了有声小说,有声读物,有声书, 儿童睡前故事,相声小品,鬼故事等数亿条音频。 今天我们一起学习如何采集喜马拉雅的音频。随时随地,听我想听。

开发环境:

  1. 版 本:anaconda5.2.0(python3.6.5)

  2. 编辑器:pycharm

相关模块:

import requests
import pprint
import re

实现效果

Python采集喜马拉雅的音频,随时随地,听我想听 Python采集喜马拉雅的音频,随时随地,听我想听

完整代码

import requests
import pprint
import re

"""批量下载 找到规律"""

# 块注释
"""使用接口 传入音频的id 获取音频的下载地址"""

headers = {
    'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/77.0.3865.90 safari/537.36'
}


def download_media(song_id, sond_name):
    # 选择 tab shift+tab撤销缩进
    """根据songid name"""
    media_url = 'https://www.ximalaya.com/revision/play/v1/audio?id=' + song_id + '&ptype=1'
    # 伪造浏览器的身份
    response = requests.get(media_url, headers=headers)
    # 我是python请求的
    # print(response.request.headers)
    # 字典类型
    data = response.json()
    # print(data)
    # pprint.pprint(data)
    # 格式化打印 漂亮的数据 只要会用就行了
    # pprint.pprint(data['data'])
    mp3_url = data['data']['src']

    # 视频 音频 图片 二进制 需要解码吗?
    response = requests.get(mp3_url)
    # text 文字 content
    # print(response)
    with open(sond_name + '.m4a', 'wb') as f:
        f.write(response.content)
    print(sond_name, '下载完毕')


# sond_name = '女神的贴身高手 第10集 真正的高手'
# song_id = '98944395'
# download_media(song_id, sond_name)
for i in range(1, 32):
    response = requests.get('https://www.ximalaya.com/youshengshu/16411402/p'+str(i)+'/', headers=headers)
    # print(response.text)
    name_url = re.findall('<div class="text _c2"><a title="(.*?)" href="/youshengshu/16411402/(\d+)">', response.text)
    for i in name_url:
        print(i[0], i[1])
        download_media(i[1], i[0])