前言:

爬取数据,我们都先必须了解开发者工具的使用和网页的源代码,即Python导入第三方库的步骤。

开发者工具使用步骤:

使用F12或者Ctrl+Shirt+i打开开发者工具

说明:

1)先检查HTML的结构是不是对的,再检查样式有没有问题

2)Ctrl+滚轮,可以放大开发者工具代码大小

3)左边是HTML元素结构,右边是CSS样式

4)右边CSS样式可以改动数值和颜色查看更改后效果;

点击Network

分析酷我音乐网站

第一步:先播放音频文件

第二步获取到一首歌的URL播放地址

**Request URL ** 代表着要请求网址的URL

Request Method代表着网址的请求方式,通常的请求方式为(GET请求、POST请求)

Status Code:代表着请求网站的状态码

状态码解释地址

写入一首歌的教程

# -*- coding: utf-8 -*-

# @Time : 2019/12/23 13:00

# @Author : 大数据小J

# @File : 测试数据.py

# @Software: PyCharm

# 导入第三库 pip install requests

import requests

# 爬取一首歌的步骤

with open('酷我音乐/我是如此相信.mp3','wb')as f:

url = 'https://eb-sycdn.kuwo.cn/5a767c337ce097f62967b2ac0f8d5b78/5e005045/resource/n3/25/23/2765484690.mp3'

music = requests.get(url)

f.write(music.content)

f.close()

那么需求来了

如果我想要获取歌手的第一页的所有歌曲怎么办

如果我想获取歌手的所有的歌曲怎么办

我不仅要获取歌手的歌曲,还要获取歌手的歌曲名字,该怎么办?

进入正题,开始分析

在网站中每一首歌都会有着网站标识的id值,这个id值相当于人的身份证,每个人都有着自己的身份标识。

第一步:先分析第一首歌有没有什么内容

第二步:大家会发现最后一个网站会包含着歌曲的数据

该URL对应着rid值是怎么来的

第三步:我们可以查找该对应的歌曲名字会发现相对应的数值

会发现该歌曲rid值,在一个URL链接中存放着

所以得出以下结论:

该网站存放对应第一页URL数据

http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key=%E5%91%A8%E6%9D%B0%E4%BC%A6&pn=1&rn=30&reqId=f4ad9b80-2549-11ea-92dc-b1e779c8d1d6

每一首歌有对应的着rid存放数据的URL

http://www.kuwo.cn/url?format=mp3&rid=83728113&response=url&type=convert_url3&br=128kmp3&from=web&t=1577081015618&reqId=f4af2221-2549-11ea-92dc-b1e779c8d1d6

开始撸代码

# -*- coding: utf-8 -*-

# @Time : 2019/12/23 13:54

# @Author : 大数据小J

# @File : 酷我音乐完整版.py

# @Software: PyCharm

import requests

from urllib import parse

import json

# 该网站有反爬机制,要模拟浏览器来进行伪装。

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',

'Referer': 'http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6',

'csrf': 'RUJ53PGJ4ZD',

'Cookie': 'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1577029678,1577034191,1577034210,1577076651; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1577080777; kw_token=RUJ53PGJ4ZD'

}

# 该函数功能最终要获取歌曲相对应的id值和歌曲的名字

def get_music_url():

# 把数据存放到列表中

music_list = []

# 歌手的名字

singer = str(input('请输入要下载歌手:'))

# 歌曲的页数

number = int(input('请输入要下载的页数:'))

for i in range(1, number + 1):

parameters = {

'key': singer,

'pn': i,

'rn': 30,

'reqId': 'f4ad9b80-2549-11ea-92dc-b1e779c8d1d6'

}

data = 'http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?'

url_data = parse.urlencode(parameters)

url = data + url_data

music_list.append(url)

return music_list

# 该函数获取对应的rid值和名字

def get_music_data(url):

list_data = []

response = requests.get(url, headers=headers)

html = response.text

result = json.loads(html)

data = result['data']['list']

for i in data:

rid = i['rid']

name = i['name']

list_data.append((rid, name))

return list_data

# 该函数获取歌曲的mp3文件

def get_music_mp3(rid):

list_data = []

url = 'http://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3&br=128kmp3&from=web&t=1577081015618&reqId=f4af2221-2549-11ea-92dc-b1e779c8d1d6'.format(

rid)

response = requests.get(url, headers=headers)

html = response.text

result = json.loads(html)

music_url = result['url']

list_data.append(music_url)

return list_data

# 该函数来存放该执行的代码块

def main():

for url in get_music_url():

for i in get_music_data(url):

# 歌曲的rid

rid = i[0]

name = i[1]

for music_url in get_music_mp3(rid):

try:

with open('酷我音乐/{}.mp3'.format(name), 'wb')as f:

print('正在下载{}'.format(name), end='')

music = requests.get(music_url)

f.write(music.content)

f.close()

print('t下载完成')

except:

print('出现错误')

# 在当前模块运行该代码程序

if __name__ == '__main__':

main()

运行结果:

python爬去音乐_Python爬虫——分析酷我音乐网站,并爬取歌曲-Go语言中文社区相关推荐

  1. python爬去新浪微博_Python 爬虫如何机器登录新浪微博并抓取内容?

    啊喂,你们不要只收藏不点赞啊 = = 稍微更新一下,多说两句. 虽然爬取移动端比较简单,但是爬一点难的东西对身体好对吧. 总结一下这个模拟登陆涉及的东西: 1.用户名经过base64加密. 2.输入用 ...

  2. 利用python爬取豆瓣音乐_Python爬虫小白入门(七)爬取豆瓣音乐top250

    抓取目标: 豆瓣音乐top250的歌名.作者(专辑).评分和歌曲链接 使用工具: requests + lxml + xpath. 我认为这种工具组合是最适合初学者的,requests比python自 ...

  3. 知乎python练手的_Python—爬虫之初级实战项目:爬取知乎任一作者的文章练手

    爬虫之初级实战项目:爬取知乎任一作者的文章练手 在正式上代码之前,先过一遍之前所学知识的框架内容,温故而知新!!! 接下来我们直接上代码,一定要手敲代码.手敲代码.手敲代码!!! import req ...

  4. python爬去新浪微博_Python爬虫爬取新浪微博内容示例【基于代理IP】

    Python爬虫爬取新浪微博内容示例[基于代理IP] 发布时间:2020-09-07 10:08:14 来源:脚本之家 阅读:120 本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参 ...

  5. 利用python爬取豆瓣音乐_python爬虫之豆瓣音乐top250

    回家很久了,实在熬不住,想起来爬点数据玩一玩,之前自己笔记本是win7加ubuntu16.04双系统,本打算在ubuntu里写代码的,可是回到家ubuntu打开一直是紫屏,百度知乎方法用了也没解决,厉 ...

  6. python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取

    获取待爬取页面 今天继续爬取一个网站,http://www.27270.com/ent/meinvtupian/ 这个网站具备反爬,so我们下载的代码有些地方处理的也不是很到位,大家重点学习思路,有啥 ...

  7. python冰雪奇缘使用教程_python爬虫分析冰雪奇缘影评,并对关键字生成词云

    import requests; from lxml import etree import time url = "https://movie.douban.com/subject/258 ...

  8. 简笔彩色圣诞树的python代码_Python绘图,圣诞树,花,爱心 | Turtle篇-Go语言中文社区...

    1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle. ...

  9. python怎么输出所有奇数_python输出100以内奇数的几种输出方式-Go语言中文社区

    自从看了一些Python的一些基础语言之后,发现Python这门语言还是蛮有趣啊,很多计算用Python效率还是蛮高啊,几行就搞定了.比方说输出100以内的奇数,用其他语言,可能都是先for循环遍历1 ...

最新文章

  1. vue手机端回退_vue移动端弹框组件,vue-layer-mobile
  2. 数学建模第七节5.22-26补
  3. HQL中的substring
  4. mysql中使用like模糊查询时如何转义%
  5. java程序开发步骤
  6. ueditor跨域上传图片文件(基于jsp框架、tomcat)
  7. 用户行为变迁 行业垂直深耕——疫情下的2020年移动互联网报告
  8. sours insight 使用技巧
  9. poj1942——组合数学
  10. Flutter BuildOwner之dirty elements简析
  11. Atitit uke各大事业部规划 约365个事业部
  12. 源码剖析panic与recover,看不懂你打我好了!
  13. 虾皮运营技巧-虾皮台湾站四点攻略
  14. html实现手风琴轮播图,javascript经典特效分享 手风琴、轮播图、图片滑动
  15. 利用BrainTree自定义UI绑定信用卡及Paypal
  16. matlab拟合斜椭圆,椭圆拟合及拟合度评价
  17. Mac格式化移动硬盘DiskUtil
  18. verilog编程always@()内部敏感时钟不能出现时钟的上升和下降沿,行为级仿真可行,但不可综合
  19. GlobeLand30地表覆盖数据下载及预处理(去黑边,镶嵌,裁剪)
  20. 推荐一款u盘启动盘制作工具小优启动v7.0版

热门文章

  1. 潮流计算中,已知末端功率和首端电压,手算方法
  2. 两种聚类方法——K均值聚类(K-means)算法和模糊C均值聚类(FCM)算法的简述与在MATLAB中的实现
  3. uni-app中的v-for循环数组
  4. 三极管的应用之开关电路设计
  5. 微信蜜獾服务器,突击手蜜獾直播露脸,被喊话关掉美颜,粉丝:这么帅不女装可惜了...
  6. Python数据爬取
  7. 分布式Session共享的4类技术方案,与优劣势比较
  8. 使用python教程进行矩分布的概率生成函数
  9. 计算机的硬件和软件ppt课件,计算机硬件和软件ppt课件
  10. 如何检查设备上是否安装了NVivo加载项?