某云音乐爬取------通过详情页

197 阅读1分钟

注意事项: (1)网易云音乐的音乐下载地址并没有在框架源代码和页面源代码中 (2)网易云音乐进行播放的时候可能会进行切片,随机切的,将一个音乐切成好几份

所以,既然没有在源代码中,我们可以进行抓包,查看数据包,可以看他数据包的大小,如果是好几MB的,那就是音乐包,或者还可以查看他的类型,如果是media类型的,也是音乐包 既然网易云音乐会随机进行切片,那么我们可以在响应标头中找到这样的东西: Content-Range:

bytes 0-3967979/3967980---------------数字是随机的,组成模式是:起始字节-终止字节/总的大小 请求标头中,找到range:

bytes=0-
所以我们可以在headers中放个 range:bytes=0- 或者是可以等于0-终止字节结果都是一样的 这个样子我们的准备工作就做好了 代码献上:

import requests
import os
class WYmusic_Spider(object):
    os_path=os.getcwd()+'/网易云音乐/'
    if not os.path.exists(os_path):
        os.mkdir(os_path)
    def __init__(self):
        self.url='https://m701.music.126.net/20220714072242/21b8677f4c939d0b37a086a63b0e675d/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/14096465348/de87/e8cf/7f69/a4b7e9b1fd1912f5a358c0a4baf662c0.m4a'
        self.headers={
            'range': 'bytes=0-3967979',
            'referer': 'https://music/163/com/',
            'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'
        }
    def parse_response_data(self):
        response=requests.get(url=self.url,headers=self.headers).content
        self.parse_sava_data(response)
    def parse_sava_data(self,response):
        with open(self.os_path+'起风了.mp3','wb')as f:
            f.write(response)
        print('爬取成功')
if __name__=='__main__':
    i=WYmusic_Spider()
    i.parse_response_data()

目前通过搜索来指定音乐进行爬取还在研究中,这代码限制性很大,而且并不自动。 小白还在努力