哎,一言难尽啊。终于是现有的知识点是爬不了这个了,查了一下,可以通过自动化来爬

    1. import requests
    2. import re
    3. import json
    4. import os
    5. from fake_useragent import UserAgent
    6. class WyyMusic:
    7. def __init__(self,search):
    8. self.search = search
    9. self.url = f'https://music.163.com/#/search/m/?s={search}&type=1'
    10. self.headers = {
    11. 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
    12. 'referer':'https://music.163.com/',
    13. 'origin':'https://music.163.com',
    14. 'cookie':'ANTICSRF=feb39ad0fcf637cc4d96a3509c79b735; _iuqxldmzr_=32; _ntes_nnid=bb7618203efa4ff88daed77ea7ffe044,1621841609953; _ntes_nuid=bb7618203efa4ff88daed77ea7ffe044; playliststatus=visible; NMTID=00Oimg2QKVKib82kU9OkR3NvuOfhNkAAAF5nUsHeA; WEVNSM=1.0.0; NTES_P_UTID=HWdyCCmsKwnQJyka2t4pcp6Gs8rEU5yM|1629529174; NTES_SESS=BkMvI7uFUs_jL1Sc_rg8Oj0g07DuT7NJ2Vke6aL.wm.Z15ST1ltocJUAR86DoHqEIoXb5PGZjZbBGUV1DOfx9AtlJIkqOfHD.PzBPOliVRmf_6VLSZTUu8BOCgCwjF.l6BUgXNObtSCHoTkYKHP185_wMaV0lTqnQYGJgXaoWsWQnbXZzZ1JQwACpgG7ACVAOgWVFh2nh2.4J; S_INFO=1629529174|0|3&80##|keqikejigs; P_INFO=keqikejigs@163.com|1629529174|1|mail163|00&99|null&null&null#zhj&330100#10#0#0|&0||keqikejigs@163.com; nts_mail_user=keqikejigs@163.com:-1:1; WNMCID=ocbbsu.1629529179760.01.0; MUSIC_EMAIL_U=f83881b49a1c16cadcf5ac1710c2d69f54ac82e273e299c8d4fd2d668c66e5f41a56d035701f552ba108086b4df3203f; WM_TID=jryaWgQ2efJAFEVEUVM%2BqCGXxlF2oWJY; WM_NI=3Mj56ULBUx%2BOGJKskTJKvXjAIbAnGl8DEDMqPtWAWyfnOaxwAr6aZOmdrb1ZtaUNXSwQ863lynJr1ocZyA%2FW%2BZTEs9AQiv1vOpN%2FhwLQq0P0ak3bpM2RnZL2TJ8elCE0OTU%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee84d033f786b7d9ae49909e8fa6c85a828e9a85ae7a9cbba3acf84ff8a6f8b9e52af0fea7c3b92af193a6d6b55f909e9b99aa4585968594ea608a95bab9e94b8bbe8f8fc668fc9c8ba5d07b94ac99a2d673a6b28182fb7d83aefa82d945afbcbe83b452b8bf9bafdb59b58ff8d7b268bbb28693b465a186b7a2ae5de9869ca6f233838fa797b47e8db082d0eb7d908fbfd1d33ca3b5fd83f347f28ea2bbcf3a9896f886ef4987f081b5d837e2a3; __csrf=8d48a3390cfddcca448748ac8a3f4336; MUSIC_U=9de0b492647e4661a11727f68f6820e69c5b92cfadd658304ea2fb4ad665cf3d194671dccbe0aa23c21681f441c3781756f8ed9e5654306722fac3ef9d6f10fce758fe0f42e01662ad811b647f556b6fd427f2c8160bfdad; ntes_kaola_ad=1; playerid=47034938; JSESSIONID-WYYY=QZe%2Fb13lsSWgC9i5msdsWPfnNRsj4rFnlf6x6uEyu9vS4GBh0sEpGVjDEba8zNIKvlOYWcOliGh7UEZAAMYD9zE6SUE4zAEtC6GU%5CaKD3iY0IX%5CbZgZeaq2FOxEmdF5qB4wakdma1fHeV1%2BvCrrom2l%5CQAqAWW%2FXr0t0niYseHRCahKD%3A1642252964074; NTES_PC_IP=%E6%9D%AD%E5%B7%9E%7C%E6%B5%99%E6%B1%9F; BAIDU_SSP_lcr=https://www.baidu.com/link?url=rN_tdMxRAsEkftwKnSdMDGKpwcVtWgwpYoN-MXPibX7&wd=&eqid=99bffc01001842fb0000000461e2c76',
    15. }
    16. self.checkDir(search)
    17. # 创建搜索内容对应的文件夹
    18. def checkDir(self,dirName):
    19. if not os.path.exists(dirName):
    20. os.mkdir(dirName)
    21. def getMusicList(self):
    22. url = 'https://music.163.com/weapi/feedback/weblog?csrf_token=8d48a3390cfddcca448748ac8a3f4336'
    23. # 这里的data中的参数都是经过加密的,每次搜索之后的值都不一样。这里加密的内容其中包含搜索的关键字
    24. data = {
    25. 'params':'1hVfQtA4/8nuEwLs0ehPQwQWcP92tnCkYLLiLdP1MmDELsAzDA3uvqSGtwoN1x9jABm+gNhXgkjukv2r12+i70U71XFWhkcRQiuwAAb+Mm1WorLY4VavkoYNXl3TAGRm',
    26. 'encSecKey':'1df10a27978aaa3176896aca3bff89408476a67b834488b7d807aadb957ab94516b99cfd54921f14ddec9a85fccf5c87fc8110f95cd4ff623a0d2a4fe333d7d6cd4f190aaed88866a3c1a9d400cde3d2880a5aaf08fb1cf6262b904544e32273411594099f80363b9164cb21f0a13fbd5156910f787c347b54595aaa91737730'
    27. }
    28. try:
    29. response = requests.post(url, data=data, headers=self.headers)
    30. result = json.loads(response.text)
    31. songs = result['result']['songs']
    32. for song in songs:
    33. # print(f'歌曲名称为:【{song["name"]}】,音乐ID:{song["id"]}')
    34. songLink = 'https://music.163.com/song/media/outer/url?id=' + str(song['id'])
    35. print(f'下载歌曲{song["name"]}中...')
    36. self.downLodeSong(song["name"], songLink)
    37. except Exception as error:
    38. print('错误代码:',error)
    39. # 下载歌曲
    40. def downLodeSong(self,name,link):
    41. headers = {
    42. 'Referer': 'https://music.163.com/search/',
    43. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    44. }
    45. result = requests.get(link,headers=headers)
    46. try:
    47. if result.status_code == 200 :
    48. with open(f'{self.search}/{name}.mp3','wb') as file:
    49. file.write(result.content)
    50. print(f'{name}歌曲下载完成')
    51. else:
    52. print(result.reason)
    53. except Exception as error:
    54. print(error)
    55. print('下载完成')
    56. search = input('请输入关键词')
    57. wyy = WyyMusic(search)
    58. wyy.getMusicList()