python爬虫教程:爬取酷狗音乐
本篇针对爬虫零基础的小白,所以每一步骤我都截图并详细解释了,其实我自己看着都啰嗦,归根到底就是两个步骤的请求,还请大佬绕路勿喷。
1、打开酷狗官网,可以看到搜索框,我们要爬取的数据就是搜索歌曲后,酷狗后台返回的歌曲列表以及每首歌的歌曲信息(歌词、作者、url等)
![](https://img.haomeiwen.com/i13406307/fb24dda1a3a09449.png)
2、敲F12键进入开发者模式,选择Network - All (这里就是酷狗前后台交互的所有请求列表)
![](https://img.haomeiwen.com/i13406307/da93f97df1d760c7.png)
3、搜索框中输入搜索内容,然后右侧就可以看到会出现很多列表,搜索的列表数据其实就在这里面一条,我已经红色框标注了(找出这个可以根据那个名字song_search,实在不行点开一个个看是不是所要找的内容)
![](https://img.haomeiwen.com/i13406307/87e13e2f351e5c68.png)
4、点开这行,上面切换到Preview发现就是搜索结果的json数据,lists就是数据列表
![](https://img.haomeiwen.com/i13406307/0cd3d5c1deaff466.png)
5、点开一条歌曲,里面就包含歌曲名字,作者,AlbumID,FileHash等歌曲信息
![](https://img.haomeiwen.com/i13406307/baf1661fb1436dfa.png)
6、然后我们上面切换到Headers,可以看到RequestURL(就是请求网址),下面箭头可以看到是GET请求
![](https://img.haomeiwen.com/i13406307/a885a6c0c7bcdc37.png)
7、往下滑,可以看到Requset Headers(这个后端会验证heades,一般请求时user-agent都需要写上,有些还验证更偏的,需要看情况处理,酷狗倒是没有验证,不写headers请求也可以)和请求参数(这就是请求的参数,搜索关键词、请求数目等信息)
![](https://img.haomeiwen.com/i13406307/6a774f6c9f9f2d4c.png)
8、话不多说,我们直接用python的requests库(这个直接百度装一下就行)构造请求,我的环境是python2.7,python3的注意一下版本差异
![](https://img.haomeiwen.com/i13406307/4fb1af9a71d27f8d.png)
输出结果就是这样,可以看到返回json内容全部打印了出来,这就是和刚才在浏览器开发者工具看到的信息一样
![](https://img.haomeiwen.com/i13406307/79f1e719c5675677.png)
10、接着我们拿到列表后,再转回浏览器,拿到列表每一条歌曲的具体信息,左侧选择第一条点击进入详情页
![](https://img.haomeiwen.com/i13406307/6e5f4ccf5b8436b6.png)
11、可以看到跳转到了播放页面,刷新一下页面,重新加载一遍
![](https://img.haomeiwen.com/i13406307/ba54f886856680a3.png)
12、可以看到右侧红色框圈起来的就是歌曲信息(你可能问我怎么知道哪个才是包含歌曲信息的,当然是观察法了,写多了就有经验了,实在不会一个个点进去看)
![](https://img.haomeiwen.com/i13406307/14b846b71dfbda79.png)
13、我用箭头标注的都是一般需要爬取的有用信息,可以看到作者,歌曲名,歌词,专辑图片,id,play_url都在里面,不信你把play_url复制到地址栏回车播放的肯定是这个歌曲,拿到这个url我们就可以直接下载歌曲了
![](https://img.haomeiwen.com/i13406307/9e6c8cb7ad2b08d5.png)
14、接着我们再从上方从Preview切换到Headers,可以看到和请求歌曲列表差不多,还是GET请求
![](https://img.haomeiwen.com/i13406307/b099c895ad3b8476.png)
15、这里的query同样还是GET请求的参数,其中hash和album_id就是一首歌曲的信息,我们只需要请求不同歌曲时改这两个参数就行了(第一步请求搜索列表每一行单曲数据包含这个参数了)
![](https://img.haomeiwen.com/i13406307/0811ab654fdff4b1.png)
16、直接刚才根据开发者模式里面的RequestURL,构造get请求,请求每首歌曲时换上每首歌对应的id和hash值就行
![](https://img.haomeiwen.com/i13406307/bd719e3b0554cac9.png)
可以看到控制台打印了单曲信息,因为是json数据没有转换,直接输出打印现在看起来有点乱
![](https://img.haomeiwen.com/i13406307/eaf2561c5f6cf131.png)
注意,酷狗返回数据并不直接就是json格式,两端有一些无用字符串,需用正则表达式去除,只保留大括号{}里面(包括大括号)内容,19步骤代码里有说明
![](https://img.haomeiwen.com/i13406307/3b3c86989c23f346.png)
19、我们已经熟悉了上面的两步,最后进行汇总写一个完整的python爬虫,输入搜索歌曲,拿到搜索列表并包括单曲信息
![](https://img.haomeiwen.com/i13406307/999235ffb76d0361.png)
最后控制台输出结果
![](https://img.haomeiwen.com/i13406307/5aea210320ea9edc.png)