牛叔叔 的笔记

好好学习

2021-09-26 17:24

使用Python爬取QQ音乐的尝试

牛叔叔

Python

(699)

(0)

收藏

blog

如何通过Python爬取QQ音乐?

我们在QQ音乐中可以可以通过歌单分享给好友,将歌单通过微信分享给好友,进一步在微信中可以直接点开播放,基于此分析,是可以爬取相应音乐的。

于是在PC端微信,将歌单在浏览器中打开,查看发现并不能播放音乐,除非模拟成Android或者iOS客户端,看来QQ音乐做了客户端识别,所以如果想在打开的歌单分享页面找到音乐文件列表,就必须让模拟移动端浏览器打开相应的链接。

#读取url网址对应的html内容
def get_page_html(url):
    #假冒浏览器
    #url首先封装到一个对象中
    req = request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36')
    data = request.urlopen(req).read()
    data = data.decode("UTF-8")
    return data


这样在返回结果中就顺利找到了音乐文件列表,接下来也就很容易进行歌曲文件下载了。

#万码 根据 歌单分享url获取带有歌曲文件列表的json数据
def get_music_jsondata(url):
    html = get_page_html(url)
    soup = BeautifulSoup(html, "html.parser")
    pagedata = soup.find("script", string=re.compile("firstPageData"))
    pagedata = pagedata.string.strip()
    pagedata = pagedata[pagedata.index("=") + 1:-1]
    pagedata = json.loads(pagedata)
    return pagedata


进而就可以根据歌单文中的文件下载mp3歌曲文件了。


0条评论

点击登录参与评论