在常见的几个音乐网站里,酷狗可以说是最好爬取的啦,什么弯都没有,也没加密啥的,所以最适合小白入门爬虫

本篇针对爬虫零基础的小白,所以每一步骤我都截图并详细解释了,其实我自己看着都啰嗦,归根到底就是两个步骤的请求,还请大佬绕路勿喷。

1、打开酷狗官网,可以看到搜索框,我们要爬取的数据就是搜索歌曲后,酷狗后台返回的歌曲列表以及每首歌的歌曲信息(歌词、作者、url等)

2、敲F12键进入开发者模式,选择Network - All (这里就是酷狗前后台交互的所有请求列表)

3、搜索框中输入搜索内容,然后右侧就可以看到会出现很多列表,搜索的列表数据其实就在这里面一条,我已经红色框标注了(找出这个可以根据那个名字song_search,实在不行点开一个个看是不是所要找的内容)

4、点开这行,上面切换到Preview发现就是搜索结果的json数据,lists就是数据列表

5、点开一条歌曲,里面就包含歌曲名字,作者,AlbumID,FileHash等歌曲信息

6、然后我们上面切换到Headers,可以看到RequestURL(就是请求网址),下面箭头可以看到是GET请求

7、往下滑,可以看到Requset Headers(这个后端会验证heades,一般请求时user-agent都需要写上,有些还验证更偏的,需要看情况处理,酷狗倒是没有验证,不写headers请求也可以)和请求参数(这就是请求的参数,搜索关键词、请求数目等信息)

8、话不多说,我们直接用python的requests库(这个直接百度装一下就行)构造请求,我的环境是python2.7,python3的注意一下版本差异

#coding=utf-8import requestssearch = '喜欢你' #搜索内容pagesize = '10' #请求数目url = 'https://songsearch.kugou.com/song_search_v2?callback=jQuery11240251602301830425_1548735800928&keyword=%s&page=1&pagesize=%s&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1548735800930' % (search,pagesize)res = requests.get(url) #requests发起get请求print res.text #输出响应内容

输出结果就是这样,可以看到返回json内容全部打印了出来,这就是和刚才在浏览器开发者工具看到的信息一样

10、接着我们拿到列表后,再转回浏览器,拿到列表每一条歌曲的具体信息,左侧选择第一条点击进入详情页

11、可以看到跳转到了播放页面,刷新一下页面,重新加载一遍

12、可以看到右侧红色框圈起来的就是歌曲信息(你可能问我怎么知道哪个才是包含歌曲信息的,当然是观察法了,写多了就有经验了,实在不会一个个点进去看)

13、我用箭头标注的都是一般需要爬取的有用信息,可以看到作者,歌曲名,歌词,专辑图片,id,play_url都在里面,不信你把play_url复制到地址栏回车播放的肯定是这个歌曲,拿到这个url我们就可以直接下载歌曲了

14、接着我们再从上方从Preview切换到Headers,可以看到和请求歌曲列表差不多,还是GET请求

15、这里的query同样还是GET请求的参数,其中hash和album_id就是一首歌曲的信息,我们只需要请求不同歌曲时改这两个参数就行了(第一步请求搜索列表每一行单曲数据包含这个参数了)

16、直接刚才根据开发者模式里面的RequestURL,构造get请求,请求每首歌曲时换上每首歌对应的id和hash值就行

#coding=utf-8import requests#在这里,为了分步演示,直接用刚才第一步搜索时开发者模式获取到的搜索列表第一条的id和hash#文章最后有整个连贯的代码id = '557512' #单曲idhash = '41C2E4AB5660EAE04021C5893E055F50' #单曲hash值url = 'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery19107465224671418371_1555932632517&hash=%s&album_id=%s&_=1555932632518' % (hash,id)res = requests.get(url)print res.text

可以看到控制台打印了单曲信息,因为是json数据没有转换,直接输出打印现在看起来有点乱

注意,酷狗返回数据并不直接就是json格式,两端有一些无用字符串,需用正则表达式去除,只保留大括号{}里面(包括大括号)内容,19步骤代码里有说明

19、我们已经熟悉了上面的两步,最后进行汇总写一个完整的python爬虫,输入搜索歌曲,拿到搜索列表并包括单曲信息

# coding=utf-8import requestsimport jsonimport re# 请求搜索列表数据search = raw_input('音乐名:') # 控制台输入搜索关键词pagesize = "10" # 请求数目url = 'https://songsearch.kugou.com/song_search_v2?callback=jQuery11240251602301830425_1548735800928&keyword=%s&page=1&pagesize=%s&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0&_=1548735800930' % (search, pagesize)res = requests.get(url) # 进行get请求# 需要注意一点,返回的数据并不是真正的json格式,前后有那个多余字符串需要用正则表达式去掉,只要大括号{}包着的内容# json.loads就是将json数据转为python字典的函数res = json.loads(re.match(".*?({.*}).*", res.text, re.S).group(1))list = res['data']['lists'] # 这个就是歌曲列表#建立List存放歌曲列表信息,将这个歌曲列表输出,别的程序就可以直接调用musicList = []#for循环遍历列表得到每首单曲的信息for item in list:#将列表每项的item['FileHash'],item['AlnbumID']拼接请求url2url2 = 'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery191010559973368921649_1548736071852&hash=%s&album_id=%s&_=1548736071853' % (item['FileHash'], item['AlbumID'])res2 = requests.get(url2)res2 = json.loads(re.match(".*?({.*}).*", res2.text).group(1))['data']#同样需要用正则处理一下才为json格式,再转为字典#打印一下print res2['song_name']+' - '+res2['author_name']print res2['play_url']print ''#将单曲信息存在一个字典里dict = {'author': res2['author_name'],'title': res2['song_name'],'id': str(res2['album_id']),'type': 'kugou','pic': res2['img'],'url': res2['play_url'],'lrc': res2['lyrics']}#将字典添加到歌曲列表musicList.append(dict)

最后控制台输出结果

学习python过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:934109170,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容

学习python有不懂的(学习方法,学习路线,如何学习有效率的问题),可以随时来咨询我,或者缺少系统学习资料

python爬取酷狗音乐歌词_python爬虫教程:爬取酷狗音乐相关推荐

  1. python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息

    hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字.评分.评分人数以及短评. 代码实现如下:#第一个最简单的爬虫 #爬取了豆瓣to ...

  2. python音乐相册_python爬虫之爬取网易云音乐的歌曲图片和歌词

    0.目录 1.分析页面 2.获取歌曲的id 3.获取歌曲信息 4.获取歌曲图片url 5.获取歌词 6.总结 7.完整代码 1.分析页面 这一次我们来爬取网易云音乐,爬取歌单内的所有歌曲的图片和歌词, ...

  3. python爬取饿了么订单_python爬虫:爬取某图外卖数据有这篇文章就够了

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

  4. python爬取多页_Python 爬虫 2 爬取多页网页

    本文内容: Requests.get 爬取多个页码的网页 例:爬取极客学院课程列表 爬虫步骤 打开目标网页,先查看网页源代码 get网页源码 找到想要的内容,找到规律,用正则表达式匹配,存储结果 Re ...

  5. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  6. python爬虫实例手机_Python爬虫实现爬取京东手机页面的图片(实例代码)

    实例如下所示: __author__ = 'Fred Zhao' import requests from bs4 import BeautifulSoup import os from urllib ...

  7. python爬取多页数据_python爬虫实现爬取同一个网站的多页数据代码实例

    本篇文章小编给大家分享一下python爬虫实现爬取同一个网站的多页数据代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.爬虫的目的 从网上获 ...

  8. python爬虫知乎图片_python爬虫(爬取知乎答案图片)

    python爬虫(爬取知乎答案图片) 1.⾸先,你要在电脑⾥安装 python 的环境 我会提供2.7和3.6两个版本的代码,但是本⽂只以python3.6版本为例. 安装完成后,打开你电脑的终端(T ...

  9. python爬虫金融数据_python爬虫项目-爬取雪球网金融数据(关注、持续更新)

    (一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=cn&firstname=1&secondname=1_ ...

  10. python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片

    动态爬取思路讲解 1.简单的爬虫只需要访问网站搜索栏处的url,就可以在开发者工具(F12)处,利用正则表达式.Xpath.css等进行定位并抓取数据: 2.虎牙星秀页面不同于简单的网页,随时都在更新 ...

最新文章

  1. 机器学习萌新必学的 Top10 算法
  2. 如何用LSTM自编码器进行极端事件预测?(含Python代码)
  3. 德国波恩大学于鹏组根系与微生物互惠方向招收博士研究生
  4. 人脸识别门禁在安防行业的发展前景
  5. JNI Java本地接口(双向接口)
  6. 快速掌握MATLAB应用,只要从这一步开始!
  7. 信息学奥赛一本通 1040:输出绝对值 | OpenJudge NOI 1.4 02
  8. python中的return的返回与执行
  9. 个人财务软件java_个人账务管理系统java
  10. 计算机基础构建,构建高职《计算机网页设计》课程教学过程设计模式_计算机基础大一考试题...
  11. wxpython使用_wxpython的demo使用
  12. 周轶璐教授:服务好医生,如何更全面地了解数据、利用数据?
  13. [objective-c]使用Lumberjack未定义
  14. 数学励志公式:每天进步一点点
  15. 球差电镜测试常见的问题及解答(二)
  16. CATTI考前要做的事情
  17. 杂谈:新浪微博客户端的不足
  18. 数字逻辑基础:数制与码制之计数进位制
  19. PyPDF2为PDF文件起始页添加罗马数字
  20. Java实现简单的扫雷小程序

热门文章

  1. 【PLC】NB触摸屏开发入门
  2. matlab索引超出数组边界且不提示数组边界的一种处理办法
  3. java 读取读取配置文件
  4. 用打印服务器打印打印机显示脱机,菜鸟也专业 打印机脱机故障处理方法
  5. IDEA和MySQL数据库建立连接
  6. python酷q机器人_酷Q机器人实时热点Python源码
  7. 黑群晖二合一安装不了套件_黑群晖刷机教程
  8. AD16原理图页设置库路径(1)
  9. 刷屏代码·稳 from林凯
  10. DevExpress之ChartControl用法