使用python脚本抓取百度fm中的歌曲
2013-09-18 17:28
375 查看
抽空研究了一下百度fm的机制,发现没有想像中复杂啊。
这篇文章参考了zhangyuanwe的XBMC百度FM插件。
检查http://fm.baidu.com的源代码,在最后一部分的javascript代码段可以发现rawChannelList={...},这里即是频道列表的信息。
为方便处理,先将这段代码按照json的方式解析为python列表:
这里截取了channel_name和channel_id标签,后者用来找到该频道的地址。百度FM的频道格式为http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=,这里的id即是channel_id的内容。将上面的网址补全,用urlopen打开并读取,即可得到频道列表的json数据。
上图中有用数据只有channel_id和channel_name,我们需要使用channel_id来补全http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=以得到真正的歌曲列表。同样,这是一个json格式的数据,解析后得到:
这里面就是我们想要得到的数据了,尤其是songLink,它即是在线播放地址,也可以用于下载地址。
如果开发更为完备的应用,应该获取上面的其他信息。
把这些信息进行组织,可以形成歌单,如获取歌名、图片、歌词等,存储到文件里,可以由mplayer这样支持流媒体的播放器进行播放。
这是我下载的结果:
这篇文章参考了zhangyuanwe的XBMC百度FM插件。
检查http://fm.baidu.com的源代码,在最后一部分的javascript代码段可以发现rawChannelList={...},这里即是频道列表的信息。
为方便处理,先将这段代码按照json的方式解析为python列表:
start = html.find("{", html.find("rawChannelList")) # find javascript code of the channel list urls end = html.find(";", start) listjson = html[start:end].strip() # cut spaces to get channel list json #print listjson # parse channel json data = json.loads(listjson) # parse json channel_id_list = [] for item in data['channel_list']: # print "Channel Name:\t", item['channel_name'], "Category:\t", item['cate'] channel_id_list.append(item['channel_id']) # get channel id
这里截取了channel_name和channel_id标签,后者用来找到该频道的地址。百度FM的频道格式为http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=,这里的id即是channel_id的内容。将上面的网址补全,用urlopen打开并读取,即可得到频道列表的json数据。
上图中有用数据只有channel_id和channel_name,我们需要使用channel_id来补全http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=以得到真正的歌曲列表。同样,这是一个json格式的数据,解析后得到:
这里面就是我们想要得到的数据了,尤其是songLink,它即是在线播放地址,也可以用于下载地址。
如果开发更为完备的应用,应该获取上面的其他信息。
把这些信息进行组织,可以形成歌单,如获取歌名、图片、歌词等,存储到文件里,可以由mplayer这样支持流媒体的播放器进行播放。
这是我下载的结果:
相关文章推荐
- 分别使用Python和Java抓取百度搜索结果
- 使用Python3编写抓取网页和只抓网页图片的脚本
- 使用python抓取百度搜索、百度新闻搜索的关键词个数
- 一个简单的使用代理访问百度页面内容的python脚本
- 使用Python3编写抓取网页和只抓网页图片的脚本
- Win7,64位,Python使用Beautiful Soup 4抓取网易云音乐歌单中的歌曲
- Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
- cocos2d-x使用python脚本创建项目的简单方法
- 使用python编写数据检索脚本
- 使用cxfreeze将python脚本转化二进制可执行文件
- 使用python写的如何自动提交和抓取网页
- python使用urllib2抓取网页
- python网页爬虫之列车时刻表的抓取(4)-完整的python脚本
- Python使用lxml模块和Requests模块抓取HTML页面的教程
- 使用Python来开发Markdown脚本扩展的实例分享
- [转]使用PyInstaller2将Python脚本转化为可执行文件(下-进阶使用)
- python抓取百度首页的方法
- CityEngine使用Python脚本导出模型
- SecureCRT 使用python脚本
- 使用Python脚本来收发Gmail, Say no to GFW