本人在下面代码中踩过的坑主要是:
bytesArr_lric = resp.content # 直接 bytesArray , 转为text再解压缩会报错。
# str_lric = resp.text #得到歌词密文
上面二句 有一句 是将服务器返回的内容,转为文本,再将需要解压缩的部分 split 出来,再调用 zlib.decompress(btsLricContent) #解压缩, 结果解压缩报错。
原因是直接转为文本时,原压缩内容已经改变,解压缩模块报压缩文件模式错误,无法解压缩。
上面二句代码中的另一句就是正确的, bytesArr_lric = resp.content 直接用服务器返回的歌词内容,格式 bytes 数组,经 split 分割后 将 "\r\n\r\n"之后的压缩内容用于解压缩,zlib.decompress()就不再报错了。
下面是我用 python 写的代码的关键部分:
import requests
from lxml.html import etree #pip install lxml
import zlib
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
def getLric_kuwo(music_mid): #下载 kuwo 歌词 ,music_mid 是kuwo 音乐的 rid 或 mid 是数字的字符串
#