Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用
import requests
from bs4 import BeautifulSoup
import re
# 音乐下载函数
def download_music(url, filename):
response = requests.get(url, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
print(f"{filename} 下载完成。")
# 主函数
def main(url):
headers = {
'User-Agent': 'Mozilla/5.0',
'Referer': 'http://music.163.com/'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 获取歌曲信息
music_name = soup.select('.nm a')[0].text
music_link = soup.select('.u.fl a')[0]['href']
# 获取歌曲URL
music_url_response = requests.get(music_link, headers=headers)
music_soup = BeautifulSoup(music_url_response.text, 'html.parser')
music_url = re.findall(r'\"url\"\:\"(http[^\"]+)\"', music_soup.text)[0]
# 下载歌曲
download_music(music_url, music_name + '.mp3')
# 测试用的URL
url = 'https://music.163.com/#/song?id=446677690'
main(url)
这段代码使用了requests库来发送HTTP请求,以及BeautifulSoup库来解析HTML页面。代码首先定义了一个下载音乐的函数,然后在主函数中,使用BeautifulSoup对象从页面中提取歌曲信息和歌曲URL,并调用下载函数来下载歌曲。最后,代码提供了一个测试用的URL,运行主函数即可下载歌曲。
评论已关闭