之前看到有人写过类似的代码,感觉有点累赘,其中登陆那些东西其实可以避免的

我把百度音乐的网页代码稍微分析了一下,如果要求不高,下载普通音质的歌曲是不需要登陆的(当然如果你用浏览器打开下载的话,普通音质也是要求登陆下载的)

看其代码发现,即使你没有登陆,其实下载链接也已经暴露出来了,只是用javascript阻止了你在浏览器中下载,

我下面写了一个下载的demo,顺便测试了一下多进程,批量下载很实用:

#!/usr/bin/env python
#-*- coding: UTF-8 -*-import sys,os
import urllib,urllib2
from bs4 import BeautifulSoup
import json
from multiprocessing import Processclass BaiDuMusic():def __init__(self):reload(sys)  sys.setdefaultencoding('utf8')   def search(self,songName):firstUrl = "http://music.baidu.com/search?key="+urllib.quote(str(songName))userAgent = " User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 "headers = { 'User-Agent' : userAgent }requst = urllib2.Request(firstUrl,headers = headers) result = urllib2.urlopen(requst).read()#使用BeautifulSoup快速解析html文档soup = BeautifulSoup(result,from_encoding="utf-8")res_arr = []try:tmpjson = soup.find_all("li", { "class" : "bb-dotimg clearfix song-item-hook " })for x in tmpjson:tmpobj = json.loads(x['data-songitem'])value = unicode(tmpobj['songItem']['oid'])+"+++"+unicode(tmpobj['songItem']['author'])+"+++"+unicode(tmpobj['songItem']['sname'])[4:-5]res_arr.append(value)return res_arrexcept Exception, e:print u"抱歉没有找到相关资源".encode("utf-8")return 0def download(self,songid,songName,savePath="down/"):songNewUrl = "http://music.baidu.com/data/music/file?link=&song_id="+str(songid)if not os.path.isdir(savePath):  os.makedirs(savePath)savemp3 = savePath.decode('utf-8')+songName.decode('utf-8')+u".mp3"urllib.urlretrieve(songNewUrl, savemp3) if __name__=='__main__':bMusic = BaiDuMusic()res = bMusic.search(u"冰雨")# for x in res: # print x# 1128053+++刘德华+++冰雨# 7327899+++李翊君+++冰雨# 53535187+++张恒+++冰雨Process(target=bMusic.download, args=(1128053,"刘德华-冰雨")).start()Process(target=bMusic.download, args=(7327899,"李翊君-冰雨")).start()Process(target=bMusic.download, args=(53535187,"张恒-冰雨")).start()

多次测试发现还有一些小问题,比如你搜的歌曲不完整,歌曲:”我可以抱你吗“,你搜的是“我可以抱你” 那么结果会把“我可以抱你”加上em标签

上面代码是没有去掉的,需要用正则处理一下

python下载百度音乐相关推荐

  1. python 下载百度音乐

    最近在学习python,恰巧手上有某位大神无聊写的从百度上下载音乐的脚本,拿来学习学习. 在学习这个脚本前,必须得了解的一点是,百度音乐有自己的API供我们调用的(开始看到这个脚本的时候真是没想到这点 ...

  2. Python多线程结合队列下载百度音乐的方法

    本文实例讲述了Python多线程结合队列下载百度音乐的方法.分享给大家供大家参考.具体如下: 一直想做个下载音乐的脚本,后来决定就拿百度音乐开刀,经过多次分析,终于制作了一个下载百度音乐的脚本,目前只 ...

  3. [原创] 如何下载 百度音乐 超高品质MP3(320kbps)

    [b][color=red]特别说明:[/color][/b] [b][color=red]本文仅供学习使用,请勿用于非法目的.[/color][/b] [b][color=red]此外,如果音乐来源 ...

  4. 音乐api搭建php音乐下载,百度音乐api接口

    百度音乐全接口 会利用使用接口找歌简单又快捷 http://tingapi.ting.baidu.com/v1/restserver/ting 获取方式:GET 参数:format=json或xml& ...

  5. python下载百度文库,没想到竟如此简单

    源码 二话不说,先上代码 # -*- coding: utf-8 -*- #项目地址:https://github.com/JackKing-defier/Baiduwenku #@author: J ...

  6. python下载图片-python下载百度图片,python图片下载程序

    以前写的一个百度图片下载的代码,现在试试还能用,现在百度图片的质量也是越来越高了,共享一下,让粉丝和图片控能方便下载:后续功能追加请关注我的小站#coding:utf-8 ''' python 2.7 ...

  7. 如何使用 Python 下载 Youtube 音乐和视频

    本文将讨论如何使用 Python 编程语言轻松地从 Youtube 下载音乐和视频.我们将使用 Python 的原因是它是一种轻量级.快速且易于使用的软件开发工具. 我们将使用两个库来实现我们的目标a ...

  8. python 下载百度贴吧图片

    主程序 #!/usr/bin/python # -*-coding:utf-8-*- import urllib.parse, urllib.request, http.cookiejar, re, ...

  9. python下载百度网盘文件-python通过百度云api的方式上传或下载文件

    2.编写一个脚本实现长传图片,命名为:pic_upload.py import progressbar from baidupcsapi import PCS class ProgressBar(): ...

最新文章

  1. run()方法和start()方法测试解析
  2. 【 .NET Core 3.0 】框架之二 || 后端项目搭建
  3. Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)
  4. 计算机 运行命令,教你电脑运行命令
  5. 修改使用计算机的名称,Windows 10中修改计算机名称的方法,你知道几种?
  6. xampp命令行连接MySql数据库
  7. 全能型AI!用通用预训练感知模型处理多模态多任务!商汤西交港中文提出:Uni-Perceiver...
  8. 超详细CookieSession的原理与用法
  9. ZooKeeper 集群为啥最好奇数台?
  10. 亲测!这款耳机堪比 AirPods,还不到 200 块!
  11. 【JSOI2007】【BZOJ1029】建筑抢修(贪心,堆)
  12. 酷狗音乐linux版_酷狗音乐PC版 9.1新版本初体验
  13. docker[-compose] 连接内网其他容器地址
  14. SAS学习7(gpolt过程、gchart过程、图形输出、ods功能、假设检验,ttest过程,rank过程,秩和检验(非参数检验))
  15. mysql 指数 类型_利用MYSQL挑选指数基金
  16. 软件测试课程设计——智云云盘
  17. 基于Java的飞机大战游戏的设计与实现(含源文件)
  18. Excel 上传数据和导出数据
  19. HTML5期末大作业:咖啡文食网站设计——代码质量好-咖啡文食品网5页面模板化(1页) HTML+CSS+JavaScript
  20. 三天打鱼两天晒网问题(C++)

热门文章

  1. Mike Brickley使用Brickley发动机和超高效内燃
  2. unity游戏之羊刀与Pendragon复盘:DotA做对了什么
  3. Thinking In ASP
  4. 【asp】aspuload
  5. 计算机中常用的数制英语,计算机中常用的几种数制
  6. Linux 虚拟网络设备 tun/tap veth pair
  7. 区块链是未来数字经济标志性的发明技术
  8. html下拉框怎么设置默认值,html下拉框怎么设置默认值-excel默认值,excel下拉框怎么设置默认值...
  9. 帝国cms百度主动推送链接主动提交插件
  10. 写给UP(冲级)的朋友