想要音频数据却不好批量下载怎么弄?python教你一招解决~

前言

嗨喽!大家好呀,这里是魔王~

环境介绍

  • python 3.8
  • pycharm

模块使用

  • requests >>> 数据请求模块 第三方模块 pip install requests
  • re >>> 正则表达式 解析数据 内置模块 不需要安装

win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源

如果你想要去实现一个爬虫案例, 你会怎么去做?

分析: 分析我们想要的数据是从哪来可以获得… 音频url

通过开发者工具进行抓包分析

  1. 找到音频url地址
  2. 找到音频数据包
    这个数据包里面就包含了我们想要音频url地址
  3. 对比数据包请求参数变化规律 每一个音频都是有其对应的音频ID
  4. 通过开发者工具 搜索ID 查询ID来源… 网页源代码里面就有我们想要音频ID

写代码目的 最终为了获取音频url >>> 音频数据包 >>> 得到音频ID

代码实现步骤: 爬虫是模拟浏览器对于url地址发送请求, 从而获取数据

一. 第一次请求, 为了获取音频ID以及音频标题

  1. 发送请求, 对于音频目录页面发送请求
  2. 获取数据, 获取服务器返回响应数据
  3. 解析数据, 提取我们想要音频ID以及音频标题

二. 第二次请求, 为了获取音频url地址

  1. 发送请求, 对于音频数据包发送请求
  2. 获取数据, 获取服务器返回响应数据
  3. 解析数据, 提取音频url地址

三. 第三次请求, 为了获取音频二进制数据, 从而进行保存

  1. 保存数据

代码

# import requests  # 数据请求模块 第三方模块 pip install requests
# """
# 发送请求
#     对于哪一个url地址发送请求, 发送什么样请求
#
# 爬虫发送请求你可以看做打电话的一个过程
# import requests 工具 手机
# url 电话号码
# headers 信号
# get 打电话的方式 座机是需要加区号 长沙0731
# <Response [200]> 打电话通了 200 嘟嘟嘟的声音  404 您所拨打电话是空号
# """
# for page in range(2, 17):
#     url = f'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=8625924&pageNum={
    
    page}&sort=0'  # 唯一资源定位符
#     # 模拟浏览器 headers请求头 字典数据类型, 构建成键值对形式
#     headers = {
    
    
#         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
#     }
#     response = requests.get(url=url, headers=headers)
#     # print(response.text)  # <Response [200]> 响应对象 200 状态码表示请求成功 404 网址不对
#     #  re.findall() 调用re模块里面findall方法  从那些数据里面, 获取什么样的数据内容 \d+ 匹配一个数字或者多个数字
#     audio_info = response.json()['data']['tracks']
#     # print(audio_info)
#     for index in audio_info:
#         # 字符串格式化方法 {
    
    } 占位符
#         link = f'https://www.ximalaya.com/revision/play/v1/audio?id={
    
    index["trackId"]}&ptype=1'
#         # print(link)
#         # 获取响应对象json字典数据
#         json_data = requests.get(url=link, headers=headers).json()
#         audio_url = json_data['data']['src']
#         """
#         response.text     数据类型是字符串 响应对象文本数据
#         response.json()   数据类型是字典 响应对象json字典数据
#         response.content  二进制数据内容
#         ctrl + alt + L 格式化代码 和网易云收藏按键  以及QQ 锁定按键冲突
#         """
#         audio_content = requests.get(url=audio_url, headers=headers).content
#         with open('audio\\' + index['title'] + '.mp3', mode='wb') as f:
#             f.write(audio_content)
#         print(link, index['title'])


def get_num():
    lis = []
    for a in range(10):
        for b in range(10):
            for c in range(10):
                for d in range(10):
                    num = f'{
    
    a}{
    
    b}{
    
    c}{
    
    d}'
                    lis.append(num)
    return lis


print(get_num())

string = '1111122211'
string = string.replace('2', '3')
print(string)

尾语

好了,我的这篇文章写到这里就结束啦!

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

猜你喜欢

转载自blog.csdn.net/python56123/article/details/124174552
今日推荐