本文共 2208 字,大约阅读时间需要 7 分钟。
访问调试页面
打开浏览器,进入喜马拉雅小说页面,按下F12 进入开发者工具。找到页面中的 Media 标签,点击播放按钮后,进入 Network > Media > Headers,找到 Request URL。获取下载链接
点击右上角的三个点,复制Download Button,将链接粘贴到新的浏览器窗口中即可开始下载。安装必要库
打开PyCharm,创建新项目,导入 requests 库。如果未安装,使用 pip install requests 进行安装。获取用户代理信息
在浏览器中打开Headers,找到 User-Agent,复制并添加到代码中。编写下载脚本
使用以下代码片段实现单集下载:import requestsheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}media_url = 'http://audio.cos.xmcdn.com/group47/M0A/34/EA/wKgKm1tHj6GwgeWBAFehkfjyvKI181.m4a'response = requests.get(media_url, headers=headers)with open('badao.mp4', 'wb') as f: f.write(response.content)运行脚本
将media_url 替换为实际下载链接,运行脚本即可完成下载。解析网页获取ID
使用parsel 库解析喜马拉雅小说页面,提取每一集的 ID 和名称。import parselfrom parsel import Selectorheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}def get_total_page(page_url): response = requests.get(page_url, headers=headers) sel = Selector(response.text) sound_list = sel.css('.sound-list ul li a')[:30] for sound in sound_list: media_url = sound.css('a::attr(href)').extract_first().split('/')[-1] media_name = sound.css('a::attr(title)').extract_first() yield (media_url, media_name)# 示例使用for media_id, media_name in get_total_page('https://www.ximalaya.com/youshengshu/16411402/'): media_url = media_api(media_id) download_meida(media_url, media_name)下载全部页数
通过修改 URL 参数p,循环下载多页小说。import requestsdef media_api(track_id): api_url = f'https://www.ximalaya.com/revision/play/v1/audio?id={track_id}&ptype=1' response = requests.get(api_url, headers=headers) data_json = response.json() src = data_json['data']['src'] return srcif __name__ == '__main__': for page in range(2, 3): meidas = get_total_page(f'https://www.ximalaya.com/youshengshu/16411402/p{page}') for media_id, media_name in meidas: media_url = media_api(media_id) download_meida(media_url, media_name)下载所有页面
根据实际需求调整页码范围,例如range(1, 31) 下载所有 30 页。通过以上方法,可以轻松实现喜马拉雅小说音频的批量下载,适用于需要自动化处理的场景。
转载地址:http://islfk.baihongyu.com/