恭祝大家春节愉快!
请点赞,转发加关注和私信,获取源代码!
在介绍爬取音频数据案例的课程中,我们大概讲解了爬虫应该知道和应该会一些知识。
在2021年春节长假期间,宅家或外出旅行,使用Python程序,能爬取自己喜欢的歌曲,听自己喜欢的歌曲,伴随自己和亲人渡过这个愉快的节日,夫复何求!
不多说了,开干!
- 首先,说说实现爬取歌曲的思路:
Bash
"""
思路步骤:网址-请求&接收-解析和筛选-保存文件
1. 爬取数据网站(url&headers)
爬取哪个网站的歌曲?url = 'https://www.xxx.com/';
爬取网站歌曲的伪装?headers = {'User-Agent': ' '}
2. 请求及接收:发送和接收网站响应的数据(response对象和html文档)
导入第三方库 requests
3. 解析和筛选:对html文档进行筛选,筛选出自己需要的数据(歌曲列表和音乐数据)
导入第三方库
4. 保存:对于得到的数据进行保存
"""
- 爬取数据网站:
安装第三方库:pip install requests, pip install lxml及导入库
Bash
import requests # 导入请求模块,向网站发送请求及接收数据,自目标网址里获取网页数据
from lxml import etree # 导入lxml.etree模块,解析筛选网站响应的数据
import time
# 1. 音乐数据来源:
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Mobile Safari/537.36'
}
url = 'https://music.xxx.com/artist?id=1156'
# 2. 向网站发送请求获取数据
response = requests.get(url)
#print(response)
# 3.自网页数据筛选出需要的数据
html = etree.HTML(response.text) # 解析获取的网页数据
music_idlist = html.xpath('//a[contains(@href,"/song?")]') # 获取音乐数据的标签
path = "D:/Download/music/" # 将歌曲下载到指定路径
# 拆分单个音乐的标签
for data in music_idlist:
href = data.xpath('./@href')[0] # 筛选出含歌曲的信息
music_id = href.split("=")[1] # 自歌曲信息中筛选出歌曲id
music_name = data.xpath('./text()')[0] # 获取歌曲名字
# 下载接口
base_url = 'https://music.xxx.com/song/url?id='
download_url = base_url + music_id # 拼接下载歌曲的完整url
musicdata = requests.get(download_url, headers=headers).content # 请求歌曲的数据
# 4. 保存音乐文件:将获得的音乐数据保存为音乐文件
with open(path+music_name+".mp3",'wb') as file: # 创建一个空白的mp3文件
# with open('./163song/%s.mp3' % music_name, 'wb') as file:
file.write(musicdata) # 将请求得到的歌曲数据写入空白的mp3文件
time.sleep(0.3)
print('<%s>下载成功' % music_name)
最后,运行爬虫程序,爬取自己喜欢歌曲!
教材编制不易,希望能帮助到更多有兴趣的学习者;请您点赞转发及关注,可以让更多的人假日学编程;非常感谢!
作者:关中老玉米
日期:2021年02月10日