# coding:utf-8

import urllib2
import re
import urllib
import chardet
from json import * category = '经典老歌'
url = 'http://music.baidu.com/tag/' + category
url_songs = 'http://play.baidu.com/data/music/songlink'
try:
request = urllib2.Request(url)
response = urllib2.urlopen(request)
content = response.read()
patt_str = '<li data-songitem = \'{&quot;songItem&quot;:{&quot;sid&quot;:(.*?),.*?</li>'
pattern = re.compile(patt_str,re.S)
songIds = re.findall(pattern,content)
#for songId in songIds:
#print songIds
formdata = {"songIds":",".join(songIds)}
#print formdata
data_encoded = urllib.urlencode(formdata)
songList = urllib2.urlopen(url_songs,data_encoded)
songListJson = songList.read()
#print songListJson
song_dict = JSONDecoder().decode(songListJson)
#print song_dict
song_data_dict = song_dict.get('data').get('songList')
for sond_data in song_data_dict:
song_name = sond_data.get('songName')
song_artistName = sond_data.get('artistName')
song_format = sond_data.get('format')
song_link = sond_data.get('songLink')
#print song_name+'--'+song_artistName+'.'+song_format+u' 下载链接为:'+song_link
music = urllib.urlopen(song_link).read()
open(song_name+'.mp3','w').write(music) except urllib2.URLError,e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason

python 抓取百度音乐的更多相关文章

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

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

  2. 抓取百度音乐频道歌曲url

    参考了 http://blog.csdn.net/banguijun/article/details/11815263 后写了一个抓取fm音乐url的模块,得到所有频道歌曲的url.缺点是百度会变更u ...

  3. Python抓取百度百科数据

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

  4. 手把手教你使用Python抓取QQ音乐数据(第一弹)

    [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. [二.需要的库] 主要涉及的库有:requests.json ...

  5. 手把手教你使用Python抓取QQ音乐数据(第二弹)

    [一.项目目标] 通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精 ...

  6. 使用python抓取百度搜索、百度新闻搜索的关键词个数

    由于实验的要求,需要统计一系列的字符串通过百度搜索得到的关键词个数,于是使用python写了一个相关的脚本. 在写这个脚本的过程中遇到了很多的问题,下面会一一道来. ps:我并没有系统地学习过pyth ...

  7. python抓取百度百科点赞数等动态数据

    利用selenium 模拟浏览器打开页面,加载后抓取数据 #!/usr/bin/env python # coding=utf-8 import urllib2 import re from bs4 ...

  8. Python抓取百度汉字笔画的gif

    偶然发现百度汉语里面,有一笔一划的汉字顺序:          觉得这个动态的图片,等以后娃长大了,可以用这个教写字.然后就去找找常用汉字,现代汉语常用字表 .拿到这里面的汉字,做两个数组出来,一共是 ...

  9. python抓取百度热词

    #baidu_hotword.py #get baidu hotword in news.baidu.com import urllib2 import os import re def getHtm ...

随机推荐

  1. [并查集] POJ 1182 食物链

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 66294   Accepted: 19539 Description ...

  2. [转载]GlassFish 的安装及设置命令

    移步: http://blog.csdn.net/joyous/article/details/8008870

  3. JAVA类和对象课后作业

    1.使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询"你已经创建了多少个对象?" 代码: //显示类 //YiMingLai 2 ...

  4. spring @ModelAttribute 注解

    @ModelAttribute // 表示请求该类的每个Action前都会首先执行它,也可以将一些准备数据的操作放置在该方法里面. public void setReqAndRes(HttpServl ...

  5. Firebug的下载安装

    网上下载到的Firebug最后得到的都是一个.xpi文件 这个文件直接从文件夹拖入火狐浏览器就可以完成安装了,但浏览器总会告诉你无法通过验证.... 这时候你只需要在火狐浏览器中输入about:con ...

  6. 认识WCF

    WCF 一.什么是WCF? 1.Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口.它是.NET框 ...

  7. myeclipse编译问题

    这个问题困扰了两天,在用springmvc编写Controller层的时候.我前台js跳转时@RequestMapping无法捕获到,但是之前的编写的都可以捕获正常执行.然后我更改js的跳转地址,发现 ...

  8. C++ 为什么拷贝构造函数参数必须为引用?赋值构造函数参数也必须为引用吗?

    之前写拷贝构造函数的时候,以为参数为引用,不为值传递,仅仅是为了减少一次内存拷贝.然而今天看到一篇文章发现自己对拷贝构造的参数理解有误. 参数为引用,不为值传递是为了防止拷贝构造函数的无限递归,最终导 ...

  9. flume从kafka中读取数据

    a1.sources = r1 a1.sinks = k1 a1.channels = c1 #使用内置kafka source a1.sources.r1.type = org.apache.flu ...

  10. Spring MVC 3.0 深入及对注解的详细讲解

    核心原理 1.       用户发送请求给服务器.url:user.do 2.       服务器收到请求.发现Dispatchservlet可以处理.于是调用DispatchServlet. 3.  ...