在这个Python代码片段中,作者分享了一种使用Python爬虫技术来获取千千音乐(原百度音乐)歌曲信息和下载音乐的方法。首先,我们看到两个主要函数:`Get_text` 和 `download_music`。 1. **Get_text 函数**: 这个函数用于发送HTTP请求并获取指定URL的HTML内容。它通过`requests`库实现,并尝试检测响应状态码。如果请求成功,它会解析出网页编码,并返回文本内容;如果请求失败,则输出错误信息。 2. **get_songId 函数**: 通过正则表达式匹配HTML中的链接,这个函数负责提取歌曲的唯一标识符(songid),这是后续获取音乐信息的基础。 3. **download_music 函数**: 这是核心部分,它接收两个参数:`song_ids`(歌曲ID列表)和`tag`(音乐类型或搜索词)。对于每个song_id,它构造一个URL,其中包含songid用于播放音乐的信息。然后通过`Get_text`函数获取JSONP格式的数据,其中包含了歌曲的元数据(如标题、作者和比特率)。 - 首先,通过正则表达式从返回的HTML中提取JSON数据。 - 使用`json.loads`将JSON字符串转换为Python字典,以便访问具体的歌曲信息。 - 接着,尝试下载AAC音频文件。这里使用`requests.get`获取文件链接,如果成功则打印歌曲名称和下载成功的消息,否则打印下载失败的消息。 通过这个脚本,用户可以批量下载千千音乐(原百度音乐)的歌曲,只要提供歌曲的ID或者搜索关键词,就可以获取并保存歌曲。然而,需要注意的是,网络爬虫可能违反网站的使用条款,尤其是商业服务,因此在实际使用时应确保遵循版权法律和网站政策。此外,由于音乐版权和API的变动,这个代码可能在未来不再有效,用户需要根据最新的API文档进行更新。对于代码的不足之处,作者鼓励读者提出改进意见,这表明开发者对代码质量的重视和社区合作精神。
import requests,re,json,os
def Get_text(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
print("请求成功")
return r.text
except:
print("请求失败")
def get_songId(html):
#正则取出每一页歌曲的songid
songIds=re.findall(r'<a href="/song/(.*?)".*?',html)
# print(songIds)
return songIds
def download_music(song_ids,tag):
for song_id in song_ids:
#拼接每一首歌的songid
url="http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&callback=jQuery172009464779806914603_1542961432060&songid=%s&from=web&_=1542961435466"%song_id
#再次请求
html=Get_text(url)
try:
#z正则取出songid
data=re.findall(r'\((.*?)\)',html)[0]
#转换成字典
data=json.loads(data)
except:
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦