参考了 http://blog.csdn.net/banguijun/article/details/11815263

后写了一个抓取fm音乐url的模块,得到所有频道歌曲的url。缺点是百度会变更url地址,失效后需要重新获取。话不多说上代码:

# -*- coding: UTF-8 -*-
'''
Created on 2013-12-3
从百度的频道中抓取歌曲的下载地址
@author:
'''
import urllib
import json
SAVEPATH='/home/gfc/musiclistnew.txt' # defines the storage location 定义存储位置 用时要修改为自己的文件存放地址
getlisturl = "http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=" #get list url 获取频道列表url
getmusicrealurl = 'http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=' #获取歌曲地址url html = urllib.urlopen("http://fm.baidu.com/").read().decode("utf-8")
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
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 musiclistfile = open(SAVEPATH, 'w') # open file for channel_id in channel_id_list:#循环频道列表
musiclist = urllib.urlopen(getlisturl + channel_id).read().decode("utf-8")
musicidslist = json.loads(musiclist)['list']
musicUrlList = []
for songid in musicidslist:#遍历频道歌曲列表
getMusicUrls = urllib.urlopen(getmusicrealurl + str(songid['id'])).read()
urlmusic = json.loads(getMusicUrls)
musicUrl = urlmusic['data']['songList']
for songlink in musicUrl:#取得歌曲url并写入文本文件
musiclistfile.write(songlink['songLink'])
musiclistfile.write('\n')
musiclistfile.close()

抓取百度音乐频道歌曲url的更多相关文章

  1. 使用浏览器抓取QQ音乐接口(歌曲篇)

    前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...

  2. python 抓取百度音乐

    # coding:utf-8 import urllib2 import re import urllib import chardet from json import * category = ' ...

  3. requests爬取百度音乐

    使用requests爬取百度音乐,我想把当前热门歌手的音乐信息爬下来. 首先进行url分析,可以看到: 歌手网页: 薛之谦网页: 可以看到,似乎这些路劲的获取一切都很顺利,然后可以写代码: # -*- ...

  4. Python抓取百度百科数据

    前言 本文整理自慕课网<Python开发简单爬虫>,将会记录爬取百度百科"python"词条相关页面的整个过程. 抓取策略 确定目标:确定抓取哪个网站的哪些页面的哪部分 ...

  5. python3 - 通过BeautifulSoup 4抓取百度百科人物相关链接

    导入需要的模块 需要安装BeautifulSoup from urllib.request import urlopen, HTTPError, URLError from bs4 import Be ...

  6. C#.Net使用正则表达式抓取百度百家文章列表

    工作之余,学习了一下正则表达式,鉴于实践是检验真理的唯一标准,于是便写了一个利用正则表达式抓取百度百家文章的例子,具体过程请看下面源码: 一:获取百度百家网页内容 public List<str ...

  7. 用PHP抓取百度贴吧邮箱数据

    注:本程序可能非常适合那些做百度贴吧营销的朋友. 去逛百度贴吧的时候,经常会看到楼主分享一些资源,要求留下邮箱,楼主才给发. 对于一个热门的帖子,留下的邮箱数量是非常多的,楼主需要一个一个的去复制那些 ...

  8. Python爬虫之小试牛刀——使用Python抓取百度街景图像

    之前用.Net做过一些自动化爬虫程序,听大牛们说使用python来写爬虫更便捷,按捺不住抽空试了一把,使用Python抓取百度街景影像. 这两天,武汉迎来了一个德国总理默克尔这位大人物,又刷了一把武汉 ...

  9. Python3---爬虫---抓取百度贴吧

    前言 该文章主要描述如何抓取百度贴吧内容.当然是简单爬虫实现功能,没有实现输入参数过滤等辅助功能,仅供小白学习. 修改时间:20191219 天象独行 import os,urllib.request ...

随机推荐

  1. MySQL绿色版的安装(mysql-5.6.22-win32.zip)

    1.数据库下载 Mysql官方网站:http://www.mysql.com/,数据库下载地址:http://www.mysql.com/downloads/.从官方网站可以找到两种文件包,一种是ex ...

  2. CGI

    CGI的工作原理一般是这么定义的: 客户端web浏览器浏览某个主页后,利用一定的方式提交数据,并通过HTTP协议向Web服务器发出请求,服务器端的HTTP Daemon(守护进程)将描述的主页信息通过 ...

  3. 如何让input框自动获得焦点

    项目中有个需求  一个用扫描枪输入的input框 为了避免每次都需要人为点击 需要做成当打开页面时该input框自动获取焦点 <input type="text" name= ...

  4. JNI支持C++与C的区别

    1. C++的代码后缀是".cpp" 2. 在JNI.h 文件中有两套代码.一套是支持c的, 一套是支持JNI的. JNI.h地址:mac ▸ 用户 ▸ douj ▸ Docume ...

  5. Combobox

    1.方式一 <select id="cc" class="easyui-combobox" name="dept" style=&qu ...

  6. iscroll4 捕捉元素开发手机焦点图滑动效果

    html标准代码格式 <div id="wrapper"> <div id="scroller" > <ul id="t ...

  7. 流量咪教你挖到5G免费流量

    自从出现了“抢红包”这个伟大的发明,身边的小伙伴们人人都练就了“左手右手一个快动作”的技能.然而,抢红包只有反应快还不够,还要避免下面这样的悲剧! 为了避免各位小主,因为流量不足而输在抢红包的起跑线上 ...

  8. Oracle 11.2.4.0 ACTIVE DATAGUARD 单实例安装(COPY创建备库)

    Oracle 11.2.4.0 ADG 单实例安装(COPY创建备库) 规划: 主: OS: Linux Centos 6.5 X64 hostname:ORA11G-DG1 ipaddress:19 ...

  9. xampp下创建多个虚拟网站目录

    大家知道,伟大的IIS下面增加多个网站就1分钟搞定.现在换XAMPP下运行多个PHP目录,那我们需要有点探索精神.那么进入正题 首先,下载安装官方最新版本的xampp,地址:点击.记得如果电脑安装有I ...

  10. 安装Office 2010后出现正在配置

    OFFICE 2010 MSDN版出来后,下载安装 ,启动后发现每次打开都会出现“正在配置”的进度,删除重装亦不成功,对SETUP.EXE改名也不行,最后找到这个方法,成功,备忘: 运行以下内容: r ...