在这篇博客中,我们将介绍如何使用 Python 编写一个简单的 VIP 音乐下载脚本,利用网页爬虫技术从一个音乐网站下载歌曲。通过解析网页,获取歌曲的真实下载链接,并将音乐文件保存到本地。我们将使用 requests
和 BeautifulSoup
库来实现这个过程。
目标
本脚本的主要功能是:
- 根据用户输入的歌手名或歌曲名,获取与其相关的音乐链接。
- 提取音乐的下载链接(通过解析动态加载的内容)。
- 下载音乐文件并保存到本地。
环境准备
在开始之前,确保你已经安装了以下 Python 库:
requests
:用于发送 HTTP 请求。beautifulsoup4
:用于解析 HTML 内容。re
:用于处理正则表达式,提取网页中动态加载的内容。
你可以通过以下命令来安装所需的库:
pip install requests beautifulsoup4
步骤 1:初始化请求头和 Cookies
许多网站会根据请求头(Headers)和 Cookies 来验证访问者的身份,因此我们需要手动设置这些信息。通常,网络爬虫访问的请求头会模仿真实用户浏览器的请求,避免被网站屏蔽。
headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Accept-Language": "zh-CN,zh;q=0.9","Cache-Control": "max-age=0","Connection": "keep-alive","Sec-Fetch-Dest": "document","Sec-Fetch-Mode": "navigate","Sec-Fetch-Site": "none","Sec-Fetch-User": "?1","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}cookies = {"Hm_lvt_c2b69091f94cb4368f25c28fc7c2d28c": "1729832766","HMACCOUNT": "A5E96BCC045D9E68","Hm_lpvt_c2b69091f94cb4368f25c28fc7c2d28c": "1729843476"
}
步骤 2:定义文件名清理函数
为了避免文件名中包含非法字符(如 <>:"/\|?*\n
等),我们需要编写一个函数来清理文件名。这个函数会将不允许的字符替换为空字符或其他安全字符。
def sanitize_filename(title):# 去除换行符和其他不适合的字符sanitized_title = re.sub(r'[<>:"/\\|?*\n]', '', title)return sanitized_title
步骤 3:获取歌曲的下载链接
我们首先要获取与用户输入的歌曲相关的页面链接。这可以通过搜索功能实现。在获取到页面后,我们使用 BeautifulSoup
解析页面的 HTML 内容,查找所有包含音乐链接的 <a>
标签。
def search_music(name):url = f"https://www.gequbao.com/s/{name}"response = requests.get(url, headers=headers, cookies=cookies)b