嗨喽~大家好呀,这里是魔王呐 ❤ ~!
python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
需求分析:
有什么需求要实现? 这些需求可以用什么技术实现?
找到音乐数据的位置, 分析 不同音乐的链接有何规律?https://lx-sycdn.kuwo.cn/b784688662c82db8aea3ad04bbb01bdc/656dc4ad/resource/n1/78/40/2947728637.mp3https://lx-sycdn.kuwo.cn/382ee6a7e57aac60a159e73dee031ce6/656dc5d2/resource/n2/15/57/3738471511.mp3mid: 音乐idreqId: 请求idhttps://kuwo.cn/api/v1/www/music/playUrl?mid=321546471&type=music&httpsStatus=1&reqId=f904d451-92a0-11ee-88a7-cd556da794d5&plat=web_www&from=https://kuwo.cn/api/v1/www/music/playUrl?mid=321068515&type=music&httpsStatus=1&reqId=7b32f0b1-92a1-11ee-80fb-47c57d0b026e&plat=web_www&from=
实现批量采集
爬虫实现的基本流程和思路
-
发送请求(访问链接)
-
获取数据
-
解析数据
-
保存数据
简单反爬的处理方案
-
添加请求头信息
-
cookie
-
referer
-
User-Agent
代码展示
导入模块
import requests # 发送请求第三方库
反爬措施 伪装信息: 将爬虫代码伪装成一个普通的用户
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
headers = {# 身份信息(主要代表你现在是哪个用户)'Cookie': '_ga=GA1.2.1106834021.1675858131; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1701178796,1701264414,1701432331,1701692848; _gid=GA1.2.871820917.1701692848; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1701693001; _ga_ETPBRPM9ML=GS1.2.1701692848.7.1.1701693001.44.0.0; Hm_Iuvt_cdb524f42f0cer9b268e4v7y735ewrq2324=A4nhbaBDkcGKR8T6QPH6JSwBSzz5be7b',# 防盗链'Referer': 'https://kuwo.cn/play_detail/321546471',# 服务端自定义校验参数, 服务器会校验这个参数'Secret': 'c2e09d2c27cd95a98def1bd080e7721f8ff4d4e40d4ebdf09372af38c62c540d03791677',# 设备信息, 代表你现在所用的设备'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
请求链接
url = 'https://kuwo.cn/api/v1/www/music/playUrl?mid=321068515'
- 发送请求(访问链接)
response = requests.get(url, headers=headers)
-
获取数据
-
.text: 获取文本内容 (字符串数据)
-
.content: 获取二进制数据 (保存图片/音频/视频的时候使用)
-
.json(): 获取json数据 并转为字典 ({“”: “”,“”: “”,“”: “”,“”: “”})
结构化数据: JSON数据
非结构化数据: 网页源代码, 无规则的数据
-
json_data = response.json()
- 解析数据
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# data > url
music_url = json_data['data']['url']
- 保存数据
music_data = requests.get(music_url).content
# mode='wb': 写入方式 以二进制的形式去覆盖写入数据
with open('冬天的秘密.mp3', mode='wb') as f:# 将音乐数据写入到 open('渣渣辉.mp3', mode='wb') 文件当中f.write(music_data)
尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。