博客
关于我
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中 urllib, urllib2, httplib, httplib2 几个库的区别
    查看>>
    python中 yaml库 & json库 & xmltodict库使用
    查看>>
    python中 将你的名字转化成为二进制并输出
    查看>>
    Python中*args 和**kwargs的用法
    查看>>
    Python中*args 和**kwargs的用法
    查看>>
    Python中*args和**kwargs的使用
    查看>>
    python中0、1、True、False、if条件
    查看>>
    python中argparse模块关于 parse_args() 函数详解(全)
    查看>>
    python中base64编码与解码
    查看>>
    python中break怎么用_详解Python中break语句的用法
    查看>>
    python中del函数的垃圾回收
    查看>>
    Python中DrissionPage的详细解析与实战
    查看>>
    python中enumerate、变量类型转换
    查看>>
    python中execute是啥_python – 为什么“c.execute(…)”打破循环?
    查看>>
    python中exit和break区别_Python中exit()和sys.exit()之间的区别
    查看>>
    python中h5的用法
    查看>>
    python中http协议编程_HTTP编程
    查看>>
    python中if的效率_python中关于if-else使用性能的一点感悟
    查看>>
    python中import os_Python:相对导入与绝对导入(import)、os.path、__file__
    查看>>
    python中is和==操作符
    查看>>