博客
关于我
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基础变量之---列表
    查看>>
    python基础变量之---元组
    查看>>
    python基础内容_Python基础入门必须了解的
    查看>>
    Python基础之面向对象2(封装)
    查看>>
    Python基础之给函数增加元信息
    查看>>
    python基础之字符编码
    查看>>
    python基础之多线程与多进程(二)
    查看>>
    Python基础——MySQL数据库基本操作
    查看>>
    Python基础_列表 list
    查看>>
    python基础---->常用模块
    查看>>
    Python基础(2):控制结构
    查看>>
    Python基础 | 关于“循环”那些事
    查看>>
    python系列【仅供参考】:python 远程rdp
    查看>>
    python基于flask搭建http服务(四)—— Docker容器化部署
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>