本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云 作者:python学习教程

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

在常见的几个音乐网站里,酷狗可以说是最好爬取的啦,什么弯都没有,也没加密啥的,所以最适合小白入门爬虫
本篇针对爬虫零基础的小白,所以每一步骤我都截图并详细解释了,其实我自己看着都啰嗦,归根到底就是两个步骤的请求,还请大佬绕路勿喷。

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

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

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

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

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

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

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

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

#coding=utf-8import requests
search = '喜欢你' #搜索内容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内容全部打印了出来,这就是和刚才在浏览器开发者工具看到的信息一样

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

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

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

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

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

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

直接刚才根据开发者模式里面的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步骤代码里有说明

我们已经熟悉了上面的两步,最后进行汇总写一个完整的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']拼接请求url2    url2 = '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爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦相关推荐

  1. Python爬虫之爬取酷狗音乐歌曲

    Python爬虫之爬取酷狗音乐歌曲 1.安装第三方库 在Python的语言库中, 分为Python标准库和Python的第三方库. Python标准库是在你安装Python的时候已经包含在了安装目录下 ...

  2. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  3. Python爬虫爬取酷狗音乐TOP500

    Python大作业 内容简介: 用Python来爬取酷狗音乐TOP500的歌曲信息,统计这500首歌曲中出现的所有歌手,并做可视化处理生成词云 实验代码: import time import req ...

  4. Python爬虫案例:爬取酷狗音乐全排行榜歌曲

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本次目标 爬取酷狗音乐全站排行榜歌曲 目标地址 https://www.ku ...

  5. Python爬取酷狗音乐-详解(多图预警)

    目录 1.前言 2.分析一下 1. 2. 3. 3.代码解释 4.完整代码 5.结语 1.前言 前面发布了一篇关于QQ音乐爬取的教程,但对于我们这种文艺青年来说,一个平台的歌曲怎么够我们听的,也是因为 ...

  6. 爬虫训练(三):爬取酷狗音乐

    今天趁机一鼓作气,把简单爬虫内容一次学习完毕,最后以爬取酷狗音乐排行榜歌曲作为结束,然后对此次学习做一个整理和总结.而且前两篇有些混乱,这里把内容做一次阶段性总结. 一.安装包 爬虫三大包:reque ...

  7. python爬取酷狗音乐排行榜

    本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下 转载于:https://www.cnblogs.com/Pythonmiss/p/10799941.html

  8. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  9. scrapy_redis分布式爬取酷狗音乐

    scrapy_redis分布式爬取酷狗音乐 前言 安装scrapy_redis 创建scrapy项目 spider模块 items模块.pipelines模块 setting.py 调试 运行 成果图 ...

  10. python爬虫——爬取酷狗音乐top500(BeautifulSoup使用方法)

    酷狗音乐Top500 酷狗top500http://www.kugou.com/yy/rank/home/1-8888.html?from=rank 进入,并按F12打开开发者工具(本文以火狐浏览器为 ...

最新文章

  1. 二叉树:二叉搜索树的创建和插入
  2. linux sudo 实现原理
  3. 常用jQuery代码分享
  4. Python + wordcloud + jieba 十分钟学会生成中文词云
  5. 《机器学习实战》chapter03 决策树
  6. matlab中.P文件的使用说明
  7. FineUILearning
  8. python基础day2作业:购物车
  9. python正则匹配空格+数字+空格_详解Python中正则匹配TAB及空格的小技巧
  10. 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解
  11. 实现远程访问局域网内的多台电脑
  12. 白板推导系列Pytorch-PCA降维
  13. 原生JS实现各种经典网页特效——Banner图滚动、选项卡切换、广告弹窗等
  14. 位图和矢量图转换工具推荐
  15. 关于CMOS摄像头的DVP接口的工作方式与一般使用方法
  16. 威廉玛丽学院计算机教授刘旭,专栏-中国计算机学会
  17. 2020-11-19学习记录(keer‘s bug与gdb bug)
  18. python代理ip_python代理ip7个汇总技巧
  19. 在Redhat9上安装Oracle 9.2
  20. 零基础学习OpenCL(1)-安装OpenCL

热门文章

  1. 中兴防火墙配置_中兴防火墙
  2. linux命令和vim学习
  3. swiper自定义分页器的样式
  4. 艾永亮:中国传统企业的“产品革命”
  5. Java中数组的遍历
  6. 《信息安全工程师教程》——网络信息安全概述
  7. 介绍一个很不错的电影网站
  8. 增长渠道价值衡量,LTV与CAC
  9. 学考计算机里分号是哪个,中考电脑阅卷流程曝光!认真看完多拿分!
  10. 深入理解android的读后感_《陪孩子长大》读后感