使用python脚本抓取百度fm中的歌曲

抽空研究了一下百度fm的机制,发现没有想像中复杂啊。

这篇文章参考了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这样支持流媒体的播放器进行播放。

这是我下载的结果:



程序最新版请点击:http://blog.putaot.cn/?post=55 功能: 1.可以更换背景图片,并保留 2.可以更换字体颜色,并保留 3.真正实现搜索音乐,搜索到的音乐可以试听,可以添加到列表 4.只要你提供歌曲名和歌手名就可以播放音乐的超级播放器! 5.实现托盘的使用 6.实现文件类型的关联(程序方面还没有做好这个功能,但是可以把歌集文件(.yyu)拉到播放器图标) 7.实现禁止多开,同时可以让播放器获得焦点 8.可以更换标题 9.更多功能由你发现! 下面是程序的下载地址: http://pan.baidu.com/share/link?shareid=956078571&uk=4161313552 2014-01-19 更新!↓ 1.歌集编辑界面的背景图片同步主界面 更加相称 2.音乐搜索引擎全面更换,更改为搜狗音乐搜索,搜索速度加快 3.主界面去掉头像图片移动歌曲信息的展现位置,界面更加简洁 4.修正主界面播放与歌集编辑界面不同步问题! 5.修正主界面和歌集界面已知的bug 6.歌集编辑界面增加对单条歌曲的编辑 7.歌集界面解决单条歌曲无法删除问题 8.歌曲搜索界面完善“添加到歌集”“创建新歌集”功能。 9.歌曲界面删除“下载所选”“播放所选”功能 10.优化程序逻辑,优化利用百度API获得播放地址的模块 11.优化变量传递模式 2014-01-19 随心听.rar 源码下载地址:http://pan.baidu.com/s/1hql2IpQ 程序下载地址:http://pan.baidu.com/s/1hqiKRnY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值