python爬去音乐_Python爬虫——分析酷我音乐网站,并爬取歌曲-Go语言中文社区
前言:
爬取数据,我们都先必须了解开发者工具的使用和网页的源代码,即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语言中文社区相关推荐
- python爬去新浪微博_Python 爬虫如何机器登录新浪微博并抓取内容?
啊喂,你们不要只收藏不点赞啊 = = 稍微更新一下,多说两句. 虽然爬取移动端比较简单,但是爬一点难的东西对身体好对吧. 总结一下这个模拟登陆涉及的东西: 1.用户名经过base64加密. 2.输入用 ...
- 利用python爬取豆瓣音乐_Python爬虫小白入门(七)爬取豆瓣音乐top250
抓取目标: 豆瓣音乐top250的歌名.作者(专辑).评分和歌曲链接 使用工具: requests + lxml + xpath. 我认为这种工具组合是最适合初学者的,requests比python自 ...
- 知乎python练手的_Python—爬虫之初级实战项目:爬取知乎任一作者的文章练手
爬虫之初级实战项目:爬取知乎任一作者的文章练手 在正式上代码之前,先过一遍之前所学知识的框架内容,温故而知新!!! 接下来我们直接上代码,一定要手敲代码.手敲代码.手敲代码!!! import req ...
- python爬去新浪微博_Python爬虫爬取新浪微博内容示例【基于代理IP】
Python爬虫爬取新浪微博内容示例[基于代理IP] 发布时间:2020-09-07 10:08:14 来源:脚本之家 阅读:120 本文实例讲述了Python爬虫爬取新浪微博内容.分享给大家供大家参 ...
- 利用python爬取豆瓣音乐_python爬虫之豆瓣音乐top250
回家很久了,实在熬不住,想起来爬点数据玩一玩,之前自己笔记本是win7加ubuntu16.04双系统,本打算在ubuntu里写代码的,可是回到家ubuntu打开一直是紫屏,百度知乎方法用了也没解决,厉 ...
- python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取
获取待爬取页面 今天继续爬取一个网站,http://www.27270.com/ent/meinvtupian/ 这个网站具备反爬,so我们下载的代码有些地方处理的也不是很到位,大家重点学习思路,有啥 ...
- python冰雪奇缘使用教程_python爬虫分析冰雪奇缘影评,并对关键字生成词云
import requests; from lxml import etree import time url = "https://movie.douban.com/subject/258 ...
- 简笔彩色圣诞树的python代码_Python绘图,圣诞树,花,爱心 | Turtle篇-Go语言中文社区...
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle. ...
- python怎么输出所有奇数_python输出100以内奇数的几种输出方式-Go语言中文社区
自从看了一些Python的一些基础语言之后,发现Python这门语言还是蛮有趣啊,很多计算用Python效率还是蛮高啊,几行就搞定了.比方说输出100以内的奇数,用其他语言,可能都是先for循环遍历1 ...
最新文章
- vue手机端回退_vue移动端弹框组件,vue-layer-mobile
- 数学建模第七节5.22-26补
- HQL中的substring
- mysql中使用like模糊查询时如何转义%
- java程序开发步骤
- ueditor跨域上传图片文件(基于jsp框架、tomcat)
- 用户行为变迁 行业垂直深耕——疫情下的2020年移动互联网报告
- sours insight 使用技巧
- poj1942——组合数学
- Flutter BuildOwner之dirty elements简析
- Atitit uke各大事业部规划 约365个事业部
- 源码剖析panic与recover,看不懂你打我好了!
- 虾皮运营技巧-虾皮台湾站四点攻略
- html实现手风琴轮播图,javascript经典特效分享 手风琴、轮播图、图片滑动
- 利用BrainTree自定义UI绑定信用卡及Paypal
- matlab拟合斜椭圆,椭圆拟合及拟合度评价
- Mac格式化移动硬盘DiskUtil
- verilog编程always@()内部敏感时钟不能出现时钟的上升和下降沿,行为级仿真可行,但不可综合
- GlobeLand30地表覆盖数据下载及预处理(去黑边,镶嵌,裁剪)
- 推荐一款u盘启动盘制作工具小优启动v7.0版