python爬虫之音乐下载

使用爬虫实现音乐下载

需要用到以下几点内容 

  1. requests请求   
  2. 文件操作  
  3. 一点点正则表达式

首先,分析我们要爬取的网站,这里用到的是 好听轻音乐网,

  1. 第一步,选择任意一首歌点击加号,添加到列表。

《python爬虫之音乐下载》

2.第二步,多添加几首,打开开发者工具,播放下一首,会发现,network中多了一个5的资源包

《python爬虫之音乐下载》

3. 鼠标右键点击这个资源包,copy->copy link dress, 在新窗口中打开,发现这个就是那个音乐。

    我这得到的是这个url地址,http://f2.htqyy.com/play7/55/mp3/5, 再切换另一首歌曲,得到http://f2.htqyy.com/play7/261/mp3/5。发现规律没有,http://f2.htqyy.com/play7/{  }/mp3/5 黑色背景部分为变动部分,其余不变,下面的任务就是找出每首歌对应的数字。

4.在首页,点击热播榜更多(这里举例)

    《python爬虫之音乐下载》

    发现这里有很多很多页,如果想把这几页都下载下来怎么办,打开开发者工具,点击第二页,发现network里多了一个资源包

《python爬虫之音乐下载》

鼠标右键点击这个资源包,copy->copy link dress, 在新窗口中打开,点击红色圈中的部分,然后点击歌名,可以看到 每首歌对应的数字 sid=‘4’例如水边的阿狄丽娜对应的是http://f2.htqyy.com/play7/4/mp3/5。得到了每首歌的url。

《python爬虫之音乐下载》

5. 得到每一页的url ,打开第二页的url为

http://www.htqyy.com/top/musicList/hot?pageIndex=1&pageSize=20

打开第一页的url为,

http://www.htqyy.com/top/musicList/hot?pageIndex=0&pageSize=20

得到通式:http://www.htqyy.com/top/musicList/hot?pageIndex={ }&pageSize=20   

黑色部分为页码从0开始

通过以上分析,得知如果想下载音乐的话必须先找到其对应的url,然后再进行二进制文件的写操作

代码如下:

import re   # python 的正则库
import requests     # python 的requests库

songId = []         # 用来储存每首歌对应的数字
songName = []       # 用来储存每首歌的名字

# 这里先下载5页的歌曲
for n in range(0, 5):
    # 字符串的格式化 n 代替 {}
    url = 'http://www.htqyy.com/top/musicList/hot?pageIndex={}&pageSize=20'.format(n)
    print(url, end='\n')
    # 模拟浏览器请求,拿到html代码
    html = requests.get(url)
    # 用正则表达式捕获 数字, ()内为捕获的内容 .*? 为任何内容
    resultId = re.findall('sid="(.*?)">', html.text)
    # 用正则表达式捕获 歌名
    resultName = re.findall('<a href=".*?" target="play" title="(.*?)" sid=".*?">', html.text)
    # 存进数组
    songId.extend(resultId)
    songName.extend(resultName)
print(songId)
print(songName)


for m in range(0, len(songId)):
    # 字符串的格式化 m 代替 {}
    songUrl = 'http://f2.htqyy.com/play7/{}/mp3/5'.format(songId[m])
    print(songUrl, end='\n')
    print('正在下载第{}首。。。'.format(m+1))
    # 得到返回资源的内容
    response = requests.get(songUrl).content
    # 以二进制的形式写入文件中
    f = open('E:\\music\\{}.mp3'.format(songName[m]), 'wb')
    f.write(response)
    f.close()

有什莫疑问,咱们可以一起探讨,敬请留言
《python爬虫之音乐下载》

    原文作者:Mr_Qio
    原文地址: https://blog.csdn.net/weixin_41324527/article/details/80403159
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞