博客
关于我
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函数,匿名函数,高阶函数,内置函数——08
    查看>>
    python+flask计算机毕业设计高校疫情防控管理平台(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校网上迎新系统(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校运动会(程序+开题+论文)
    查看>>
    python+flask计算机毕业设计高校选课系统(程序+开题+论文)
    查看>>
    Python+Jenkins+Allure Report接口自动化测试持续集成
    查看>>
    python+locust电商全流程性能测试
    查看>>
    Python函数运行的可执行文件的终端输出如何以一般方式静音?
    查看>>
    Python+Pytest+Allure+Git+Jenkins接口自动化框架
    查看>>
    python+pytest接口自动化 —— 参数关联
    查看>>
    python+pytest接口自动化 —— 参数关联
    查看>>
    Python+pytest接口自动化 —— 接口测试基础
    查看>>
    python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
    查看>>
    Python+pytest接口自动化之cookie绕过登录(保持登录状态)
    查看>>
    python+pytest接口自动化:接口测试
    查看>>
    Python+requests+unittest执行接口自动化测试详情
    查看>>
    Python+requests+unittest执行接口自动化测试详情
    查看>>
    python+requests+unittest执行自动化接口测试!
    查看>>
    Python+Requests编码识别Bug
    查看>>
    python函数编写_[零基础学python]传说中的函数编写条规
    查看>>