爬虫初上手之爬取QQ音乐!


作为一名爬虫界的萌新,我终于通过了新手教程——requests库的学习,兴致勃勃地撸起袖子准备大爬一场大干一场。

我的第一个爬取目标是QQ音乐。在我的设想中,一个网站的根目录下有很多子目录,里面装着子网页和各种资源,其中一个文件夹就是音乐库,所有的音乐都在里面被分门别类地存放好,我只要找到这个文件夹就好了。比如这样:r = requests.get('https://y.qq.com/music/你的名字.mp3')

“爬虫真是又简单又方便!一行代码连QQ音乐都能爬下来!”我这么想着,打开了QQ音乐的主页,然后就看到了这个:
emmm,好吧,看样子事情并没有我想的那么简单。


WTF?!网页版下不了歌??那我怎么爬?我人都傻了。。

没办法,看样子我还是太菜了,所以我只好在网上找资料,看看大神都是怎么爬的。

。。

。。。

。。。。

。。。。。

。。。。。。

终于,被我找到了一个大神的博客:https://blog.csdn.net/weixin_44119390/article/details/90812246
这篇博客不长,在大神一通眼花缭乱看不懂的操作之后,就成功找到了资源的url。
没办法,一步一步地查资料,一点一点地理解吧,慢慢来。。。
。。。。。。

。。。。。

。。。。

。。。

。。


我终于弄懂大神的意思了哈哈哈哈哈~~(笑容中透着心酸)~~

以下是参考博主后我自己的代码:

import requests
import json
import osclass QQmusic:def __init__(self):self.songlist = []def get(self,url):              # 访问服务器try:res = requests.get(url,headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'})res.raise_for_status()except:print('连接服务器失败!')os.system("pause")else:res.encoding = 'utf-8'return resdef search(self):               # 搜索音乐name = input('请输入歌名或歌手:')url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=20&w=%s'%(name)html = self.get(url).texthtml = html[9:]html = html[:-1]html = json.loads(html)          # 获取歌曲信息self.songlist = html['data']['song']['list']for song in self.songlist:if song['pay']['paydownload']:print(song['songname'],song['singer'][0]['name'],'[VIP]')else:print(song['songname'], song['singer'][0]['name'])def download(self):                 # 下载音乐choice = int(input('您想下载第几首歌(1~20):'))while self.songlist[choice-1]['pay']['paydownload']:choice = int(input('您无法下载VIP歌曲!请重新输入(1~20):'))print('开始获取资源......')         # 获取vkey,purlkeyUrl = 'https://u.y.qq.com/cgi-bin/musicu.fcg?&data={"req":{"param":{"guid":"9106200888"}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"9106200888","songmid":["%s"],"uin":"3137"}},"comm":{"uin":3137}}'%(self.songlist[choice-1]['songmid'])html = self.get(keyUrl).texthtml = json.loads(html)purl = html['req_0']['data']['midurlinfo'][0]['purl']url = 'http://dl.stream.qqmusic.qq.com/' + purl       # 拼凑资源urlprint('资源地址获取成功')music = self.get(url).contentwith open(self.songlist[choice-1]['singer'][0]['name'] + '   ' + self.songlist[choice-1]['songname'] + '.mp4', 'wb') as f:f.write(music)print('下载完成')f.close()os.system("pause")QQ = QQmusic()
QQ.search()
QQ.download()

运行结果:

emmm,界面好丑,接下来是GUI图形化了,又是一块硬骨头。。

下期再见!

爬虫初上手之爬取QQ音乐!相关推荐

  1. python爬虫爬取音乐单曲_Python爬取qq音乐的过程实例

    一.前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元 ...

  2. 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息

    本文对使用到的技术仅做简单的介绍,若想了解更多,请前往相应的官网网站进行学习. 本文适合对爬虫相关知识接触不多的新手,主要是普及Selenium如何做爬虫,大佬请跳过. 1.Selenium简单介绍 ...

  3. 【python】实验2项目2:使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(陈奕迅)

    请使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(可以是任意歌手)最受欢迎的前5首歌曲的歌词.流派.歌曲发行时间.评论条数.评论时间.评论点赞次数.评论内容具体(每一首歌的评论& ...

  4. Python网络爬虫数据采集实战:Scrapy框架爬取QQ音乐存入MongoDB

    ​    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本 ...

  5. Python网络爬虫数据采集实战(八):Scrapy框架爬取QQ音乐存入MongoDB

    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本涵盖了爬虫 ...

  6. 爬虫入门——爬取QQ音乐某一歌手前五首歌曲信息及相关评论

    文章目录 前言 一.查看信息 二.代码实现 总结 前言 python课作业 请使用爬虫Selenium模拟浏览器获取爬取QQ音乐中你喜欢的某位歌手(可以是任意歌手)最受欢迎的前5首歌曲的歌词.流派.歌 ...

  7. python爬虫爬取qq音乐热歌榜的歌曲到本地

    文章目录 项目目标 具体实现步骤 完整代码 运行结果 项目目标 爬取qq音乐热歌榜https://y.qq.com/n/yqq/toplist/26.html到本地文件夹 具体实现步骤 程序思路:用s ...

  8. python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载

    QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的.于是,来了个QQmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧. 参考 ...

  9. python爬取QQ音乐免费歌曲 2020.7.26

    python爬取qq音乐免费歌曲 2020.7.26 目标分析 获取音乐列表 1.浏览器网络请求追踪 2.寻找音乐列表 解析qq音乐 1.下载连接组成 2.获取vkey 3.获取sign参数 关系图 ...

最新文章

  1. 自动驾驶高清地图问题的研究
  2. [三代] 获取BADI对象的两种方法
  3. [JOI2012春季合宿]Rotate (链表)
  4. My SQL InnoDB 1217 - Cannot delete or update a parent row:aforeign key constraint fals
  5. java版spring cloud+spring boot+redis多租户社交电子商务平台 (十三)springboot集成spring cache...
  6. javascript两行代码按指定格式输出日期时间
  7. 预览ExtJS 4.0的新功能(四):焕然一新的Store/Proxy
  8. 剑指Offer之逆序对问题
  9. 很久之前写的【成绩管理系统】的数据库
  10. MyCat - 使用篇(5)
  11. 微信公众号自定义菜单
  12. 嵌入式C语言面试题剖析100,嵌入式c语言面试题汇总超.docx
  13. MySQL多表查询,SQL,笛卡尔积等值连接自连接外连接,SQL99新特性,完整详细可收藏
  14. C#从sqlite3中读数据到DataTable中报错 :System.Data.ConstraintException:“未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
  15. 上海租房。20160420
  16. nfs共享存储web项目集群的一次下载流为空FIleChannel空洞bug
  17. 大数据技术之数据质量管理
  18. Linux unrar命令如何按目录解压rar文件
  19. 放大、缩小chm文件字体的方法
  20. 互联网年终奖出炉,腾讯多个核心G,10个月打底,华为人均分红47.6w,虾皮 B绩效0.5个月,网友:羡慕哭了!...

热门文章

  1. 【java毕业设计】基于javaEE+原生Servlet+SqlServer的医院管理住院系统设计与实现(毕业论文+程序源码)——医院管理住院系统
  2. 模拟招聘大赛题目关于计算机,模拟招聘大赛活动策划书范文
  3. There is a problem with this Windows Installer package
  4. java image写入文件,从文件读取/写入图像到BufferedImage的最快方法?
  5. 算法分析:时间和空间复杂度
  6. vivo S12 Pro评测:一首在冷暖交融之间流转的华丽舞曲
  7. 2021年北京积分落户名单公布了,爬了两个多小时得到了所有数据,有了惊人的发现(附源码)
  8. 使用man命令,出现 ”No manual entry for” 的解决办法
  9. 文章展示从数据库到前端页面实现部分展示
  10. vue中实现输入字数限制