美文网首页
python抓取喜马拉雅免费专辑

python抓取喜马拉雅免费专辑

作者: yiqingxu | 来源:发表于2019-02-26 15:40 被阅读0次

    老规矩,先上代码

    import requests
    import os
    import urllib
    
    # json文件地址
    json_url = "https://www.ximalaya.com/sets/8912476.ext.json"
    
    # 仿冒Chrome浏览器进行访问,否则会无法访问
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
    response = requests.get(json_url, headers=headers)
    
    # 获取json文件
    full_json = response.json()
    
    # 找到所有的声音
    tracks = full_json['tracks']
    
    # 创建下载文件夹
    if not os.path.exists('download'):
        os.makedirs('download')
    
    # 逐个下载
    for track in tracks:
        # 获取json中的下载地址和标题
        url = track['play_url']
        title = track['title']
    
        # 用标题作为文件名
        filename = "download/"+title+".mp3"
    
        # 下载
        with urllib.request.urlopen(url) as web:
            with open(filename, 'wb+') as outfile:
                outfile.write(web.read())
    
        # 输出下载结果
        print(title," downloaded.")
    
    print('Download is done.')
    

    这次的抓取是顺着上一篇,上一次在抓取iTunes的时候看到有些音频的源是来自喜马拉雅的,所以,我顺便去喜马拉雅转了一下。

    1. 每一个喜马拉雅的专辑,例如:郭德纲21年相声精选,都会有一个分享链接,点开后,选择“展开获取专辑链接”,这时候会有“html代码”、“通用代码”和“微电台”三个选项,选择html代码,并复制链接:https://www.ximalaya.com/thirdparty/player/album/player.html?id=9723091&type=red
    2. 把上面的HTML代码的地址复制到浏览器中打开,并使用浏览器的开发者工具跟踪网络情况,会发现一个xhr里面包含该专辑所有的音频信息,地址为https://www.ximalaya.com/sets/9723091.ext.json,只需要分析该json的字段就可以抓紧了。
    3. python代码没有什么难度。

    路人:“禅师,喜马拉雅上面这些免费资源随时可以收听,流量也不算大,为什么还要下载呢?”
    禅师微微一笑,指着面前一把木锤对路人道:“看看它你就明白了。”
    路人参详许久,若有所思道:“大师的意思是否是说,下载的意义就像这把木锤一样,看似平淡无奇,但是有一种工匠精神?”
    大师闭上眼睛道:“非也!我意思是,我下载关你锤子事。”

    相关文章

      网友评论

          本文标题:python抓取喜马拉雅免费专辑

          本文链接:https://www.haomeiwen.com/subject/djwayqtx.html