windows
python3.6.5
模块:

requests
selenium
json
re
urllib
环境与模块先容完毕后,就可以来实施我们的操作了。
第1步:
通过一个解析网站:QQ音乐网站
我们可以创造,只须要在这里填写QQ音乐的地址,即可获取我们想要的音乐源文件。
第二步:
获取到QQ音乐的地址,打开我们的QQ音乐首页
通过源文件,我们可以创造里面并没有我们想要的数据:
那么,我们再来抓包剖析:
创造确实有我们想要的数据,但是当我们看到 headers报文当中的 url时,创造都是加密过后的数据!
以是涉及到了JS加密,那么 会有很多人觉得到很难,以是我们可以选择其余一个python模块selenium,直接获取我们的element 元素:
源代码为:
url=f'https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w={name}'driver.get(url)
driver.implicitly_wait(10)
data=driver.find_element_by_xpath('//div[@class=\公众songlist__item\"大众]//span[@class=\"大众songlist__songname_txt\"大众]/a').get_attribute('href')
这里的url是通过大略剖析得到的结论,只须要修正w参数即可得到不同的音乐。
第三步
把我们渠道的data链策应用到我们的解析网站:QQ音乐网站
抓包剖析:
可以创造这个是一个post要求,然后我们的表单提交的数据,便是我们的QQ音乐地址!
第四步:
仿照访问这个post要求,拿到我们的返回数据:
headers = {
'Accept':'application/json, text/javascript, /; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Connection':'keep-alive',
'Content-Length':'65',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Host':'www.douqq.com',
'Origin':'http://www.douqq.com',
'Referer':'http://www.douqq.com/qqmusic/',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
'X-Requested-With':'XMLHttpRequest',
}
data = {'mid':'前面取到的音乐地址'}
url ='http://www.douqq.com/qqmusic/qqapi.php'req = requests.post(url, data=data, headers=headers).text
它的返回值:
可以创造MV对应的链接有偏差,不是一个规则的URL,以是在此可以进行数据精髓精辟,得到终极音乐链接:
req = json.loads(req)
req = req.replace('\/\/','//').replace('\/','/')
rg = re.compile('\"大众mp3_l\公众:\"大众(.?)\"大众,')
rs = re.findall(rg, req)[0]
第五步:
下载音乐:
urlretrieve(rs, name+'.mp3')
效果: