【一、项目目标】

获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。

由浅入深,层层递进,非常适合刚入门的同学练手。

【二、需要的库】

主要涉及的库有:requests、json、openpyxl

【三、项目实现】

1.了解 QQ 音乐网站的 robots 协议

只禁止播放列表,可以操作。

2.进入 QQ 音乐主页 https://y.qq.com/

3.输入任意歌手,比如邓紫棋

4.打开审查元素(快捷键 Ctrl+Shift+I)

5.分析网页源代码 Elements,发现无歌曲信息,无法使用 BeautifulSoup,如下图所示,结果为空。

6.点击 Network,看数据在不在 XHR(无刷新更新页

面),我的经验是先看 Size 最大的,然后分析 Name,

查看 Preview,果然在里面!

7.点击 Headers,拿到相关参数。如下图,仔细观察

url 与 Query String Parameters 参数的关系,发现

url 中的 w 代表歌手名,p 代表页数。

8.通过 json 代码实现,首先小试牛刀,爬取第一页

的数据,url 直接复制过来。成功!

9.引入 params 参数,实现指定歌手、指定页数的查询。

注意代码url为上一步url中“?”之前的部分, params两边的参数都需要加 ’’,requests.get 添加 params,参数(也可顺便添加 headers 参数)

  1. 添加存储功能,保存到本地(Excel)。也可保存为 csv 格式或存入数据库,操作类似。

【四、总结】

1.爬取 QQ 音乐比爬取豆瓣等网站稍难,所需信息不在网页源代码,需查看 XHR;

2.通过 XHR 爬取数据一般要使用 json,格式为:

res = requests.get(url)

json = res.json()

list = json[‘’][‘’]…

3.仅供练手参考,不建议爬取太多数据,给服务器增大负载;

4.Python 爬取 QQ 音乐数据(二)将为大家带来如何爬取指定歌曲的歌词及评论(selenium),并生成词云图(wordcloud),敬请期待。

5.需要本文源码的话,请在公众号后台回复“QQ音乐”四个字进行获取。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】



想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

手把手教你使用Python抓取QQ音乐数据(第一弹)的更多相关文章

  1. 手把手教你使用Python抓取QQ音乐数据(第二弹)

    [一.项目目标] 通过Python爬取QQ音乐数据(一)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 此次我们在之前的基础上获取QQ音乐指定歌曲的歌词及前15个精 ...

  2. 手把手教你用Python抓取AWS的日志(CloudTrail)数据

    数据时代,利用数据做决策是大数据的核心价值. 本文手把手,教你使用python进行AWS的CloudTrail配置,进行日志抓取.进行数据分析,发现数据价值! 如今是云的时代,许多公司都把自己的IT架 ...

  3. 手把手教你使用Python爬取西刺代理数据(下篇)

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  4. 使用python抓取并分析数据—链家网(requests+BeautifulSoup)(转)

    本篇文章是使用python抓取数据的第一篇,使用requests+BeautifulSoup的方法对页面进行抓取和数据提取.通过使用requests库对链家网二手房列表页进行抓取,通过Beautifu ...

  5. Python抓取百度百科数据

    前言 本文整理自慕课网<Python开发简单爬虫>,将会记录爬取百度百科"python"词条相关页面的整个过程. 抓取策略 确定目标:确定抓取哪个网站的哪些页面的哪部分 ...

  6. 使用浏览器抓取QQ音乐接口(排行榜篇)

    前言 最近手头比较空闲,再加上看到其他人的博客都差不多有个类似的播放控件,手就会闲不下来,说干就干,所以我们开始吧! 来到QQ音乐的官网,我们就直奔着目标去,寻找排行榜 我们主要用的是最近比较热的歌, ...

  7. 使用浏览器抓取QQ音乐接口(歌曲篇)

    前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...

  8. 手把手教你用python抓网页数据

    http://www.1point3acres.com/bbs/thread-83337-1-1.html

  9. python 抓取javascript 动态数据

    1. 新安装一个python库 :~$ sudo pip install seleniumhq 2. 编写代码: 以获取百度百科点赞数为例 import selenium from selenium ...

随机推荐

  1. 【QT】利用pyqt5实现简单界面

    Topic: 利用pyqt5编写简单界面Env:win10 + Pycharm2018 + Python 3.6.8Date: 2019/4/29 by hw_Chen2018            ...

  2. [PHP自动化-进阶]003.CURL处理Https请求访问

    引言:继前文<模拟登录并采集数据>,<模拟登录带有验证码的网站>,大家对CURL基本上已经有了认识,这一讲简单的说一下请求Https. 在很多的站点,如TalkingData, ...

  3. python 05—字典

    一.字典的键是唯一的 键:简单对象,例[字符串.整数.浮点数.bool值] list不能作为键,但可以作为值. 例: score = { '萧峰' : 95, '段誉' : 97, '虚竹' : 89 ...

  4. 1. vue文件结构

    1)这是文件规则 <template> <div > </div> </template> <script> Name:"当前的名 ...

  5. Rocket - debug - dm registers

    https://mp.weixin.qq.com/s/P48K17TyRoZC7xBMltbXKQ 简单介绍调试模块中每个寄存器的定义. 1. DMI_RegAddrs 记录DMI访问的各个寄存器的地 ...

  6. jchdl - RTL Event

    https://mp.weixin.qq.com/s/P9uoJwIYdM-mbiR9WCtJCg   hardware modeling基于事件驱动模型,RTL中定义了多种事件. jchdl 参考了 ...

  7. 【HBase】知识小结+HMaster选举、故障恢复、读写流程

    1:什么是HBase HBase是一个高可靠性,高性能,面向列,可伸缩的分布式数据库,提供海量数据存储功能,一个结构化的分布式存储系统,不同于一般的关系型数据库,它适合半结构化和非结构化数据存储. 2 ...

  8. Java实现 蓝桥杯VIP 算法训练 非递归(暴力)

    试题 算法训练 非递归 问题描述 当x>1时,Hermite多项式的定义见第二版教材125页.用户输入x和n,试编写"非递归"函数,输出对应的Hermite多项式的值.其中x ...

  9. Java实现 LeetCode 699 掉落的方块(线段树?)

    699. 掉落的方块 在无限长的数轴(即 x 轴)上,我们根据给定的顺序放置对应的正方形方块. 第 i 个掉落的方块(positions[i] = (left, side_length))是正方形,其 ...

  10. Java实现 LeetCode 654 最大二叉树(递归)

    654. 最大二叉树 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构造出的最大二叉树. 右子树是通过数组中最 ...