#Python音乐爬虫#--Python爬虫之365音乐网爬取音乐

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


今天有空想下一点音乐在车上听。于是去各知名音乐网站看了一下。发现都需要花钱才能下载 (我好久都没下音乐了)

于是乎我搜索了一个我喜欢的歌手的所有音乐。找到了365音乐网站。但是打开发现只能在线听。还是没有可以下载的通道。

我以《等一分钟》为例子,打开页面。然后上F12,打开查看源码(红色标注处是关于因为相关信息。有可能是音乐ID)





然后我们查找处理音乐URL相关的JS文件,找到下图红色标注处JS文档




打开JS文档。找到下图红色标注处。这个地方就是来处理真实音乐地址的地方。我们发现了相应的规律。
发现音乐存放在一个另一个URL服务器上的。分两级目录。第一级目录是音乐ID除以30000然后取整,第二级目录是音乐id除以2000然后取整。最后构造真实音乐url路径。




为了验证这个没有问题。我尝试本地写了一个HTML文档。来进行操作。

<script>
var MusicId = "198372";
var surl = "http://96.ierge.cn/" ;
nurl = parseInt(MusicId/30000) + "/" + parseInt(MusicId/2000) + "/" + MusicId +".mp3";
document.write(surl+nurl);
</script>

然后生产的URL直接放浏览器下载。发现可以下载。并正常播放。说明文件一切正常。

接下来我需要把首页中我喜欢的这个歌手的所有歌曲都下载下来。这个时候我第一时间想到的我的Python。

现在打开如下网站:红色标注处是我需要下载的音乐






然后F12打开浏览器源码查看。将全文HTML源码拷贝到一个本地HTML文件中。文件名为music.html.红色标注处的地方是我们需要分析并获取所有歌曲的相应的musicid




接下来我上Pycharm。直接写代码。代码思路如下。先从HTML文件中获取相应音乐节点。然后分析获取每首音乐的musicid.同时需要获取音乐的歌名。

然后
通过musicid构造音乐的真实地址。最后遍历下载即可。

下面将代码贴上:


#!/usr/bin/python
# _*_ coding:utf-8 _*_
# 音乐爬虫

if __name__ == "__main__":    
    import requests
    from bs4 import BeautifulSoup
    file = open("music.html","r")
    html_doc = file.read()   

    soup = BeautifulSoup(html_doc, 'html.parser')   
    content1 = soup.find(id="content1")
    li = content1.find_all("li")

    #目标音乐站
    url = "http://96.ierge.cn/"
    musicid = []
    musicname = []
    musicurl = []
    for x in li:
        mtitle = x.a.get("title")
        musicname.append(mtitle)
        ids = x.input.get("title")
        musicid.append(ids)
        n1 = int(int(ids)/30000)
        n2 = int(int(ids)/2000)
        xurl = url + "/" + str(n1) + "/" + str(n2) + "/" + ids+".mp3"
        musicurl.append(xurl)       
        print(xurl)
        print(mtitle)


        # url = 'http://96.ierge.cn/7/109/218490.mp3'
        r = requests.get(xurl)
        with open("music/"+mtitle+".mp3", "wb") as code:
            code.write(r.content)
        print(" 下载完成。。。。")

这里主要使用了两个包。一个requests包主要用于下载音乐。一个BeautifulSoup包来分析处理获取音乐ID及歌名。

整个下载过程也就几分钟就完成了。然后妥妥将音乐上传到云。下班回家可以在车上听音乐了。^_^



posted at