博客
关于我
Python中使用requests和parsel爬取喜马拉雅电台音频
阅读量:796 次
发布时间:2023-03-09

本文共 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/

    你可能感兴趣的文章
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>
    Python启动脚本
    查看>>
    Python听写汇总结果
    查看>>
    python吊打Excel?屁!那是你不会用!
    查看>>
    Python合并两张图片 | 先叠透明度再合并 (附Demo)
    查看>>
    python各进制的表述与转换
    查看>>
    python各种库安装
    查看>>
    python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
    查看>>
    python可维护性_使用这7大神器,让你的Python 代码更容易于维护
    查看>>
    python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
    查看>>
    Python变量命名方法-ChatGPT4o作答
    查看>>
    Python变量与运算符
    查看>>
    python单元测试之unittest
    查看>>
    Python单元测试unittest实战
    查看>>
    python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
    查看>>
    Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
    查看>>