您好,这是您的代码,
import requests
import urllib.request
import re
import os
import time
import random
def spyder():
url2 = 'https://www.kugou.com/song/'#获取音乐名称的网址
url = 'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery191022319455667175525_1656931735444&hash=A2B996FC632A8F47A133AB6DC170C3D2&dfid=08xfYy3h9Bb80MNaNz4Rwr4f&appid=1014&mid=aa783e35cc2172a6a48a817ad8e3b285&platid=4&album_id=655511&_=1656931735446'#获取音乐链接的地址
headers = {#设置请求报头
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57'
}
time.sleep(random.randint(1,3))#睡眠随机1-3秒
response = requests.get(url,headers=headers)#用requests库请求音乐链接地址,传入请求头,获得响应。
html = response.text#将响应内容是页面源代码。
reg = 'jQuery191042885499078356704_1616423281083(.*?);'#设置规则
content = re.findall(reg,html)#匹配内容
element = content[0]#将字符串取出列表
response2 = requests.get(url2,headers)
html2 = response2.text#获取音乐名称的源代码
print(element)
reg2 = '<meta name="keywords" content="(.*?)" />'#设置规则
music_name = re.findall(reg2,html2)[0]#匹配规则内容,获取音乐名称。
reg = '"play_backup_url":"(.*?)"'
music_href = re.findall(reg,html)[0]#获取音乐链接
music_ls = []
for m in music_href:#拆散链接
music_ls.append(m)
while True:
if '\\' in music_ls:#如果转义符存在列表中则删除
music_ls.remove('\\')
else:#直到列表中不存在转义符跳出循环
break
print(music_ls)
music = ''#设置中间字符变量去拼接字符串
for i in music_ls:
music += i
print(music)#打印音乐链接
Music = requests.get(music,headers=headers)
os.mkdir('E:/music') #创建一个music文件夹。
with open(r'E:/music/{}.mp3'.format(music_name), 'wb+') as f:#格式化字符串的方法将音乐名称传进去。
f.write(Music.content)#写入音频内容。
spyder()#调用函数
```看了您的代码感悟很大
这是您的代码,我爬取wake歌曲,却不能了,显示list index out of range,怎么办啊
你好,关于这个问题,我感到抱歉,因为这是定向的爬虫,你看那个JSON的网址就了解了,还有就是这个网站已经更变结构了,之前的代码行不通了,抱歉啊。你要是想爬啥音乐可以私聊我。