现在我们听歌往往会集中在一个平台,但是往往很多歌曲只在一个平台独占,我们听自己几首想听的歌曲往往要在几个平台跳来跳去,正好现在在使用爬虫,在学着解析网页的时候,发现很多的音乐网站的音频往往都是用一个songid然后去follow这个url去下载,然后这时候便想使用爬虫去下载下,全程的代码也很简单,并且所有的音乐网站的思路基本一样,所以今天以百度音乐为例,写下这篇文章.(仅供个人使用!)
1:分析网页
我们在首页上随便的打开一首歌,音乐会自动播放,这时候我们会想,有那种机制可以让其自动播放?这时候我们试着去解析网页.Chrome我们按F12并刷新:
在开发者工具-network里边有Media这一栏,然后我们点进去,在header里边找到request url:
复制,在地址栏里访问:
你会发现当你复制之后,你的网页会自动给你下载音乐,是不是很神奇,并且所有的网站都是这样的一个套路,但是更重要的是我们要去让爬虫去自动下载,这时候我们就需要继续解析网页,看看他们是根据什么来下载音乐的:
经过一番苦苦的寻找之后,发现了一个好东西:
在这个ting开头的文件里,有一个jQuery,并且我们在其preview里点击发现,里边有一栏是file_link,这个地址和我们之前在media看到的一样:
这时候我们会不会想通过这个js网页去找到歌曲:
继续往下来看:
发现有一些信息,其中的title是歌曲的名字,其中的song_id其实就是这首歌曲的匹配项,这时候我们在ting文件的header里找到他的request url:
发现这是一个调用的api,根据歌曲的id去检索下载歌曲,那我们是不是可以通过搜索歌曲的id去实现歌曲的下载?
这时候我们去搜索,发现网站的格式其实是http://music.baidu.com/search?key=”你搜索的内容”,这时候解析网页:
发现歌曲的id都可以找得到,这时候我们就可以通过网页提取出id去实现批量下载,如果要高音质,就去在播放设置里更改下就可以!
代码如下:
示例:
搜索之后,可以实现下载,至于下多少,你自己想要多少就多少!
我上传了github上去:
https://github.com/yunshizhijian/music.git
也希望有会GUI的同学给美化下!