天涯论坛

 找回密码
 立即注册
搜索
查看: 16|回复: 0

利用python爬虫爬取网站音乐

[复制链接]

3069

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138952
发表于 2024-10-26 16:33:15 | 显示全部楼层 |阅读模式

近期我想在网站上下载几首音乐放到我的u盘里听,然则上网上一找,各大音乐网站下载歌曲(尤其是好听的歌曲)都需要vip。

针对像我这般的穷人来讲,肯定是不会花几十块钱去下载几首音乐啦,况且做为程序员,充钱去下载音乐那是不可能的,于是我花了一天时间,上网找了各样资料来学习一下怎么样才可不花钱白嫖到网站上的音乐。

当然,办法还是有非常多种的,最后我还是选取了一种最简单,最方便的一种办法python爬虫。下面,我就跟大众分享一下我在用python爬虫时遇到的坑。

下面,我以爬取某易云音乐为例,介绍一下我时怎样学习python爬虫的:

思路:

音乐从哪里来?---网站的服务器里怎么从网址里得到音乐?---向网站发起网络请求删选音乐文件下载音乐文件

详细实现

1. 引入发送网络请求的第三方库

import requests # 发送网络请求的第三方库 复制代码

安装办法

pip install requests 引入数据解析第三方库from lxml import etree # 数据解析第三方库 复制代码

安装办法

pipinstall lxml某易云音乐网站列表url为https://music.163.com/#/discover/toplist?id=3778678url = https://music.163.com/#/discover/toplist?id=3778678 复制代码发送请求获取页面数据response = requests.get(url=url) # 请求页面数据 复制代码解析数据html=etree.HTML(response.text) # 解析页面数据 复制代码获取所有歌曲标签集合( a标签id_list = html.xpath(//a[contains(@href,"song?")]) # 所有歌曲id集合 复制代码下载歌曲base_url = http://music.163.com/song/media/outer/url?id= # 下载音乐网址前缀 # 下载音乐url = 网址前缀 + 音乐id for data in id_list: href = data.xpath(./@href)[0] music_id = href.split(=)[1] # 音乐id music_url = base_url + music_id # 下载音乐url music_name = data.xpath(./text())[0] # 下载音乐名叫作music = requests.get(url = music_url)# 将下载的音乐以文件形式保留下来 with open(./music/%s.mp3 % music_name, wb) as file: file.write(music.content) print(<%s>下载成功 % music_name) 复制代码

遇到的坑

以上的办法我是从一个视频里学到的,那个视频是半年前出的,可能当时这种办法还好使,然则今天我在用这种办法下载音乐文件的时候忽然就报错了。

首要,编辑器报错找不到 music_namemusic_id,我仔细一看,获取的id_list集合里(便是标签集合里)的id基本不是id,是代码,估计在这儿音乐网站做了相应的反扒机制。

其次,我自己在网站里找到了一首音乐获取了它的id并把id赋值给music_id,结果当用外链下载音乐时报错460,表示网络拥挤,估计下载音乐的网址欠好使了。

base_url = http://music.163.com/song/media/outer/url?id= music_id = 1804320463.mp3 music_url = base_url + music_id music = requests.get(url=music_url) print(music.text) 复制代码

{"msg":"网络太拥挤,请稍候再试!","code":-460,"message":"网络太拥挤,请稍候再试!"}e

最后,我打印出music_url,点击进去,还是能够听歌和下载的,不晓得这是为何

base_url = http://music.163.com/song/media/outer/url?id= music_id = 1804320463.mp3 music_url = base_url + music_id # music = requests.get(url=music_url) print(music_url) 复制代码

music.163.com/song/media/…

总结

此刻的网站技术更新太快,非常多网站都有了高级反爬机制,毕竟,有些东西还是不可随随便便就给你的,我写这篇文案重点是跟大众分享一下我学习python爬虫时的有些经验,同期,我想请教各位大神,像遇到了我这种问题了,我应该怎么办才可将这个网站的音乐文件爬到我的本地电脑里,还请各大神指点一二。





上一篇:在线音乐免费下载工具集合|全网音乐无视版权下载-资源分享
下一篇:Send It 举荐一首很好听的歌曲空间背景音乐能够设置的mp3格式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 16:21 , Processed in 0.117963 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.