百度音乐不需要登录也可以下载?听到这个消息是不是很兴奋呢,

接下来我们打开百度音乐,随便打开一首歌,切换到百度播放页面:如图

我这里用的是Firfox 浏览器,打开firebug 先清空所有的请求,如图:


现在我们重新刷新下页面,看到这个.mp3的地址就是百度音乐的地址,我们可以直接复制到迅雷里下载,但是这种做法太初级了吧,如果有很多首歌曲呢,每个都这样复制,岂不是很麻烦啊。,接下来我们继续分析。

这个链接有个特点,就是music/1658513  这个是什么呢? 你猜的没错,这个是每首歌曲的Id ,再看后面的参数xcode 这个是个guid ,经过对比之后,每个都不一样,这个从哪来的啊。。我们继续分析其他请求。。

哈哈,还是被我们找到了吧,这个songLink 就是音乐的地址,但是这个请求是怎么来的呢,我们继续往上找,我们看到post请求里的参数,有个songIds 这个就是每首歌的Id,

到了这一步,一切都很顺利,把这个地址复制下来,接下来,该我们的Python出场了。。

这里使用的环境是Python3.4  ,第三方库BeautifulSoup,requests,怎么安装,网上有很多,接下来上代码

新建一个xml文件取名为music.xml 格式如下

<?xml version="1.0" encoding="utf-8"?>
<root><url>http://music.baidu.com/tag/纯净</url><pageSize>40</pageSize><savePlay>d:\\纯净\\</savePlay>
</root>

url 是百度音乐的分类地址 pageSize 是要下载的页数,savePlay 是保存的路径

接下来我们再建一个py文件 主要代码部分:

模拟浏览器请求,防止被屏蔽

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0','Referer':'http://play.xml.baidu.com/','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Cache-Control':'max-age=0','Connection':'keep-alive'
        }读取xml文件的方法
def getTagText(tag):rc = ""
    dom=xml.dom.minidom.parse("play.xml")node = dom.getElementsByTagName(tag)[0]for node in node.childNodes:if node.nodeType in ( node.TEXT_NODE, node.CDATA_SECTION_NODE):rc=node.datareturn rc

解析html方法

def DownHtml(url):try:savePlay=getTagText("savePlay")print("准备开始解析页面:"+url+"  请稍候...")html=requests.get(url,headers=headers,timeout=2000)html.encoding="utf-8"
           soup=BeautifulSoup(html.text,"html.parser")div_html=soup.find("div",class_="search-song-list song-list song-list-hook")span_html=re.findall('<span class="music-icon-hook" data-musicicon=\'(.*?)\'>',str(div_html))for v in span_html:data=json.loads(v)play=data["id"],data["songTitle"]queue.append(play)while queue:time.sleep(5) music_tuple=queue.popleft()playUrl=music.replace("$0$",music_tuple[0])print(music_tuple[1]+".mp3进入下载通道,开始排队等待...\n")resultJson=requests.get(playUrl,headers=headers,timeout=2000)data=resultJson.json()if not data['data']:pass
               else:v=data["data"]["songList"][0];print("正在下载, "+v["songName"]+".mp3 ...\n")time.sleep(2)request.urlretrieve(v["songLink"],savePlay+v["songName"]+".mp3")print(v["songName"]+".mp3 下载完成,下载路径:"+savePlay+v["songName"]+".mp3")except:pass
if __name__=="__main__":start = time.time()pageSize=int(getTagText("pageSize"))pageIndex=25
    url=getTagText("url")playurls.append(url)if pageSize>1:for v in range(pageSize):if v>0:purl=url+"?start="+str(pageIndex)+"&size=25&third_type=0"
                playurls.append(purl)pageIndex+=25
    with Pool(4)as p:p.map(DownHtml,playurls)print("本次下载共用时:"+time.time()-start)
最后发个截图,一起来看看我们运行的效果吧, ps :新手自学,如有不足的地方,欢迎指正,环境是在vs2013上开发的,如果其他ide可以单独复制出py,和xml 文件源码地址

一步步分析百度音乐的播放地址,利用Python爬虫批量下载相关推荐

  1. 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)

    前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...

  2. 类似百度音乐唱片播放时CD图片不停旋转的实现

    类似百度音乐唱片播放时CD图片不停旋转的实现 效果图 1 html代码2 <imgsrc="img/logo.png"class="img-responsive&q ...

  3. 独家首发DJ舞曲音乐在线播放微信小程序源码下载支持多分类歌曲

    这是一款音乐播放小程序源码 音乐内容是属于DJ,电音,舞曲等等这类型的 该小程序的歌曲有七大分类,分别是: 第一分类热门推荐 第二分类中文舞曲 第三分类英文舞曲 第四分类慢摇舞曲 第五分类舞曲串烧 第 ...

  4. python修改ip地址_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现

    怎么更改电脑ip地址?基于 Python 爬虫原理的篮球鞋选择程序的设计与实现ip修改 [摘 要]伴随着篮球鞋工艺的进步及产业升级,多类型多种类的篮球鞋出现在大众的视野当中.与此同时,消费者对篮球鞋的 ...

  5. python爬虫爬取音乐_利用python爬虫实现爬取网易云音乐热歌榜

    利用python爬虫实现爬取网易云音乐热歌榜 发布时间:2020-11-09 16:12:28 来源:亿速云 阅读:102 作者:Leah 本篇文章给大家分享的是有关利用python爬虫实现爬取网易云 ...

  6. 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2)...

    [爬虫]利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2) 第一篇( http://blog.itpub.net/26736162/viewspace-22865 ...

  7. 手把手教你利用 python 爬虫分析基金、股票

    手把手教你利用 python 爬虫分析基金.股票 文章目录 手把手教你利用 python 爬虫分析基金.股票 第一步:基金数据爬取 第二步:股票增持计算 第三步:好股基金选取 桌面程序 exe 从前大 ...

  8. 简单几步实现网络音乐播放器(Python爬虫版百度FM)

    Python入门之爬取百度音乐 先说一下为什么会有这篇文章,首先肯定是有这个需求了,本人出差在外地,这里的网速卡到爆,根本支撑不了在线听歌的要求,所以就想下载到本地来慢慢听.这可是python的绝活, ...

  9. RTSP/GB28181/SDK/Ehome协议人脸识别/车牌识别视频智能分析系统EasyCVR获取播放地址和流地址方法介绍

    视频联网共享服务EasyCVR人脸识别/车牌识别智能分析系统是一个集视频联网共享.存储.流媒体转发.视频转码.视频上云.智能分析等多种功能为一体的流媒体视频服务融合型平台.目前EasyCVR还可以集成 ...

最新文章

  1. Python压缩目录文件夹,解压目录文件夹及耗时效率统计
  2. MySQL 5.6通过Keepalived+互为主从实现高可用架构
  3. 处理您的请求时发生错误(Web Dynpro ABAP)
  4. java生成apk工具,生成并运行apk流程
  5. How to check if one event is cancel event - #Exit#
  6. Java 控制台程序的基本结构测试分析草稿
  7. solaris10默认防火墙软件ipfilter
  8. python随机颜色代码_python绘制随机颜色太阳花
  9. 判断一段程序是由C 编译程序还是由C++编译程序编译的
  10. @autowired注解注入为null_Spring @Autowired 注解自动注入流程是怎么样?
  11. 重大网络教育计算机基础章节答案,网络教育计算机基础1答案
  12. java excel 数组公式_在Apache poi中的数组公式
  13. android 闪屏 实现,Android游戏闪屏实现步骤详解
  14. TokenGazer评级丨Monero:XMR缓慢发行损害矿工利益,去中心化治理带来社区分裂风险...
  15. clickhouse中的TTL
  16. ctr 平滑_广告计算——平滑CTR
  17. matlab卡方分布函数,MATLAB如何使用ncx2pdf函数计算非中心卡方分布的概率密度
  18. [作业]英语作业,无聊记事
  19. 【容器云】Calico 组件架构
  20. 阿里云块存储企业级特性之异步复制

热门文章

  1. 【链塔DApp日报】BDI指数增长3.6%,以太坊DApp交易额增长24%
  2. 大数据产品开发流程规范_大数据类项目的项目管理流程是怎样的?
  3. 博客摘录「 Windbg调试命令汇总」2023年4月15日
  4. 174. 地下城游戏 逆向dp
  5. python requests 设置cookies
  6. 图灵奖设立50周年,向伟大的计算机科学家们致
  7. 同样的神经网络引擎,苹果A11芯片比华为麒麟970牛在哪? 1
  8. USMART调试组件
  9. 花滑三周连跳_【多图】【花滑小知识】如何区分六种跳跃(又名:ET的三周跳小教室)...
  10. 苹果电脑惊现比特币白皮书,乔布斯会是中本聪吗?