一、下载原理
多页列表,有get类型的,有post类型的,xima的专辑多页列表属于get类型。
比如"https://www.xi__mala__ya.com/album/262212"专辑,里面有1018个音频,分成35页,每页的json数据如下,
(1)请求格式,
https://www.xi___ma___laya.com/revision/album/v1/getTracksList?albumId=262212&pageNum=0&sort=0&pageSize=30
(2)返回格式,

{"ret":200,"data":{"currentUid":0,"albumId":262212,"trackTotalCount":1018,"sort":0,"tracks":[{"index":1,"trackId":2968682,"isPaid":false,"tag":0,"title":"潘吉Jenny告诉你--世界杯开战!","playCount":234549,"showLikeBtn":true,"isLike":false,"showShareBtn":true,"showCommentBtn":true,"showForwardBtn":true,"createDateFormat":"2014-06","url":"/sound/2968682","duration":609,"isVideo":false,"isVipFirst":false,"breakSecond":0,"length":609,"albumId":262212,"albumTitle":"潘吉Jenny告诉你-学英语聊美国","albumCoverPath":"storages/be09-audiofreehighqps/54/6E/GKwRIJIG8HemAAk3qQGehGJc.jpeg","anchorId":11119867,"anchorName":"开言英语","ximiVipFreeType":0,"joinXimi":false},{"index":2,"trackId":2968849,"isPaid":false,"tag":0,"title":"潘吉Jenny告诉你--美国血拼一族!","playCount":165942,"showLikeBtn":true,"isLike":false,"showShareBtn":true,"showCommentBtn":true,"showForwardBtn":true,"createDateFormat":"2014-06","url":"/sound/2968849","duration":738,"isVideo":false,"isVipFirst":false,"breakSecond":0,"length":738,"albumId":262212,"albumTitle":"潘吉Jenny告诉你-学英语聊美国","albumCoverPath":"storages/be09-audiofreehighqps/54/6E/GKwRIJIG8HemAAk3qQGehGJc.jpeg","anchorId":11119867,"anchorName":"开言英语","ximiVipFreeType":0,"joinXimi":false

(3)音频地址
利用url里面 /sound/xxxx的数字,可以得到音频地址,

xi__ma.com/sound/2968849

此页面在点击播放后,发送请求格式,

https://www.xi___mala____ya.com/revision/play/v1/audio?id=2968849&ptype=1

返回的 json

{"ret":200,"data":{"trackId":2968849,"canPlay":true,"isPaid":false,"hasBuy":true,"src":"https://aod.cos.tx.xmcdn.com/group10/M0B/3B/BA/wKgDZ1WctZjjfjoAAFsf1AU2p0s242.m4a","albumIsSample":false,"sampleDuration":0,"isBaiduMusic":false,"firstPlayStatus":true,"isVipFree":false,"isXimiAhead":false,"isAlbumTimeLimited":false,"ximiVipFreeType":0,"joinXimi":false}}

其中关键的是src属性,提供可以下载的音频地址。

(4)处理方法
我们不需要再取回网页,只要分两次,取回json数据即可。
第一次是目录分页的每一页的json,有用的信息为 title , index, url
第二次是每个音频的json,有用的信息为 音频地址。
使用者只需要提供album_id,指定多页型专辑,其它均自动处理。

二、代码如下

# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import re
import os
from win32com.client import DispatchHeaders = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}def get_list_json(album_id,pageNum):list_url = f'https://www.xi___ma____la___ya.com/revision/album/v1/getTracksList?albumId={album_id}&pageNum={pageNum}&sort=0&pageSize=30'#print(list_url)wd_data = requests.get(list_url,headers=Headers)return wd_data.json()  def get_sound_json(url):wd_data = requests.get(url,headers=Headers)    return wd_data.json()    def get_m4a(album_id,pagelow, pagehigh):    o = Dispatch("ThunderAgent.Agent64.1") for pageNum in range(pagelow,pagehigh):print("Page : --------------" + str(pageNum))list_json = get_list_json(album_id,pageNum)for track in list_json['data']['tracks']:#print(track)id = track['url'][7:]title = track['title']index = track['index']name = str(index) + "_" + titlem4a_url = "https://www.xi_____ma_____la____ya.com/revision/play/v1/audio?id=" + id + "&ptype=1"        m4a_json = get_sound_json(m4a_url)m4a = m4a_json['data']['src']print(m4a)           o.AddTask(m4a, name)o.CommitTasks()if __name__ == '__main__':#url = "https://www.xi__malaya.com/album/71718770"album_id = "262212"get_m4a(album_id,11,20)

说明一:get_m4a后面的两个数字是分页的开始页(含)、与结束页(不含)。
说明二:分页0和分页1的内容一样。

2023年批量下载和改名音频专辑(多页列表)相关推荐

  1. 2023年批量下载和改名音频专辑(单页列表)

    一.下载原理 1)找到目标音频的专辑网页,这里以 kite runner mp3为例.(需要自己找) https://www.xi___ma___la_____ya.com/album/7171877 ...

  2. 2023年批量下载和改名音频专辑(系列3之selenium-wire方式)

    XIMA多页动态列表中的音频下载seleniumwire 步骤说明: 步骤一:获取xima cookie 步骤二:遍历目录,逐一播放后抓取响应信息 除了系列1之单页,系列2之多页,VIP音频还有动态加 ...

  3. 批量下载和改名21世纪英文报学生周报听力

    批量下载和改名21世纪英文报学生周报听力 如何找到音频 痛点 python批量下载和改名 如何找到音频 建议使用 google chrome浏览器. https://www.i21st.cn/ 导航横 ...

  4. nodejs虾米音乐批量下载某个歌手的专辑

    使用nodejs 批量下载虾米音乐的 方法. 使用到的工具 fs,cheerio,request,redis; 模块 作用 fs 主要完成建立目录和文件的功能 request 用于进行访问url ch ...

  5. python网上批量下载表格_python爬虫智能翻页批量下载文件的实例详解

    python爬虫遇到爬取文件内容时,需要一页页的翻页爬取,这样很是麻烦,其实可以获取每个列表信息下的文件名和文件链接,让文件名和文件链接处理为列表,保存后下载,实现智能翻页批量下载文件,本文以以京客隆 ...

  6. 网店描述页详情页产品图片批量下载提取采集软件

    1688描述页详情页产品图片批量下载提取采集软件 阿里巴巴国际站描述页详情页产品图片批量下载提取采集软件 淘宝描述页详情页产品图片批量下载提取采集软件 天猫描述页详情页产品图片批量下载提取采集软件 京 ...

  7. 新一配:perl循环调用python爬虫批量下载喜马拉雅音频

    新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...

  8. node.js 实现简单爬虫批量下载喜马拉雅音频

    前提:最近一直在看node,平时碎觉喜欢听盗墓笔记啥的有声小说,然后突然就就想试着写个爬虫自己下载下来,虽然有点多此一举,但是就当学习练练手了,在这里记录一下! 没有express基础的,请先行了解 ...

  9. 利用Python编写脚本批量下载公众号中的音频

    欢迎大家光临我的博客,大家一起交流学习哦 陈京九的博客 首先声明我只是一个小菜鸡,把自己琢磨一些功能的过程发到了这里当做记录,希望大神们轻喷,能给我一些指导就更好啦~ 上一篇博客教大家下载了公众号中的 ...

最新文章

  1. Single Page Application概览
  2. 基于socket的简单p2p聊天项目
  3. Spring MVC 函数式编程进阶
  4. python 自动化-python自动化之(自动化测试报告)
  5. 蔚来Q3营收近百亿、毛利率20.3%,预计明年下半年推出2款新车
  6. Cisco IOS Cookbook 中文精简版(续)
  7. caffe之学习曲线可视化
  8. 支付宝COM组件浅析
  9. HC05 蓝牙控制LED问题
  10. 服务器按照应用级别来划分 可以分为哪些,服务器按应用级别有哪些分类
  11. Win10系统安装软件为了对电脑进行保护,已经阻止此应用解决方法
  12. 把一个代表DateTime带有T和Z的string转化成DateTime c#
  13. 邮件服务器的渗透,渗透基础——从Exchange服务器上搜索和导出邮件
  14. Win10隐藏状态栏图标的方法
  15. WNMP(Windows + Nginx + PHP + MySQL) 安装
  16. 不登录系统运行服务器,服务器开机不登录可以远程吗
  17. 计算机在中学物理的应用分析报告,信息技术在初中物理教学中的应用
  18. mysql查字段的备注_mysql怎么查看字段的备注
  19. JAVA CDI 学习(1) - @Inject基本用法
  20. 《软件功能测试自动化实战教程》—第6章6.4节Action测试输入的参数化

热门文章

  1. 君主论(第1-3章)
  2. java对接快递100追踪物流信息
  3. SQLSERVER 集合处理——INTERSECT
  4. DHL快递已订购12架!全电动飞机Alice首飞成功;浙江嘉兴首家氧吧酒店开业 | 美通企业日报...
  5. Nginx 开启gzip
  6. java代码生成_Java代码生成器CodeX4J介绍
  7. python遇到的问题及解决方法
  8. 安装Windows操作系统纯净版
  9. 2012 lt;c语言综合实验gt;答案,厦门理工学院c语言实验4循环答案.doc
  10. C++中set容器的基本使用----在B站听黑马程序员c++课程的记录