【一、项目目标】

获取 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. ansible模块详解

    [简单介绍] Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 有以下两个特性: 模块化:通过调用相关模块,完成指定任务,且 ...

  2. 日期类之SimpleDateFormat

    1.System 类下的currentTimeMillis();2.Date类:java.util.Date及其子类java.sql.Date                  如何创建实例:其下的方 ...

  3. [leetcode] 并查集(Ⅱ)

    最长连续序列 题目[128]:链接. 解题思路 节点本身的值作为节点的标号,两节点相邻,即允许合并(x, y)的条件为x == y+1 . 因为数组中可能会出现值为 -1 的节点,因此不能把 root ...

  4. 内部服务器错误Internal server error解决方法

    这里说的内部服务器错误是网站前台能正常访问,而后台程序在执行某项任务/功能时所出现的内部服务器错误解决方法: 此错误通常是超时导致的,像程序在执行采集.静态页面生成时所耗时间太长导致达到超时限制的: ...

  5. [译]深入理解JVM Understanding JVM Internals

    转载: 英文原版地址:http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/ 翻不了墙的可以看这个英文版:https: ...

  6. ansible取出register变量中最长字符串

    背景 在用ansible撰写一个etcd恢复的playbook时,有一个操作是获取etcd启动时的"initial-cluster"启动参数,该参数在etcd集群不同节点不一致,需 ...

  7. java实现BellmanFord算法

    1 问题描述 何为BellmanFord算法? BellmanFord算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶点之间的最短距离,其显著特点是可以求取含负权图的单源最短 ...

  8. java实现放麦子问题

    /* 你一定听说过这个故事.国王对发明国际象棋的大臣很佩服, 问他要什么报酬,大臣说:请在第 1 个棋盘格放 1 粒麦子, 在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子, 在第 ...

  9. 记一次discuz修改首页图片路径问题

    1.找到图片路径拼装文件 首先打开根目录下的template目录找到首页文件 打开后找到图片列表的拼装位置 // 链接示例: <!--{eval $imagelistkey = getforum ...

  10. linux基础相关命令

    请参照以下文章 shell常用命令:https://www.cnblogs.com/pengtangtang/articles/PengTangTang_linux_base_one.html 通配符 ...