您的位置:首页 > 编程语言 > Python开发

(python)下载喜马拉雅电台的音频

2015-12-05 20:10 591 查看
上一篇文章讲了如何分析,寻找视频的下载链接。其实获取喜马拉雅电台音频的链接方式也是如此,通过chrome的Network调试工具去寻找页面链接与下载链接之间的关系。

第一步:分析页面源码

直接pass了,源码中没有音频的下载链接,当然有的网站是有的,比如荔枝FM,有的话直接解析就好了,没有话,就看下一步了

第二步:chrome调试

打开chrome调试工具,逐一分析打开音频之后的网络请求和结果,以http://www.ximalaya.com/24137038/sound/10484545为例:



一点一点的分析,发现第一行和最后一行,一个是.json一个是.m4a,好了,发现了,点开.json的链接,是一个json字符串,而且我们想要的音频下载链接就在里面



第三步:总结

通过http://www.ximalaya.com/24137038/sound/10484545 获取http://www.ximalaya.com/tracks/10484545.json中的json字符串,解析字符串就可以获取音频的下载链接了,这个两个链接之间的关系,一眼就应该能看出来吧

源码

#coding=utf-8
import os
import urllib
import sys
import json
sys.path.append("..")
import common
class Xmly():

URL_PRIFIX = "http://www.ximalaya.com/tracks/"
def getJsonUrl(self,url):
result = url.split('/')
return result[len(result)-1]+".json"
def getVoiceUrl(self,html):
# print html
jsonStr = json.loads(html)
return jsonStr["title"].encode('utf-8'),jsonStr["play_path"]

def download(self,url,filepath):
jsonUrl = self.URL_PRIFIX + self.getJsonUrl(url)
html = common.getHtml(jsonUrl)
voiceTitle,voiceUrl = self.getVoiceUrl(html)
common.download(voiceUrl,filepath,voiceTitle+'.m4a')

if __name__ == '__main__':
url = "http://www.ximalaya.com/13163945/sound/10499951"
xmly = Xmly()
xmly.download(url,"/Users/cheng/Documents/PyScript/res/")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: