Python语言学习之利用Python爬虫爬取网站音乐
小职 2021-03-19 来源 :马哥Linux运维 阅读 738 评论 0

摘要:本文主要介绍了Python语言学习之利用Python爬虫爬取网站音乐,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

本文主要介绍了Python语言学习之利用Python爬虫爬取网站音乐,通过具体的内容向大家展现,希望对大家Python的学习有所帮助。

Python语言学习之利用Python爬虫爬取网站音乐

前言

 

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

  

 

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

 

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

 

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

 

思路:

 

 音乐从哪里来?---网站的服务器里

 怎么从网址里得到音乐?---向网站发起网络请求

 删选音乐文件

 下载音乐文件

具体实现

 

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

 

import requests # 发送网络请求的第三方库

安装方法

 

pip install requests

2.引入数据解析第三方库

 

from lxml import etree # 数据解析第三方库

安装方法

 

pip install lxml

3.某易云音乐网站列表url为'https://music.163.com/#/discover/toplist?id=3778678'

 

url = 'https://music.163.com/#/discover/toplist?id=3778678'

4.发送请求获取页面数据

 

response = requests.get(urlurl=url) # 请求页面数据

5.解析数据

 

html=etree.HTML(response.text) # 解析页面数据

6.获取所有歌曲标签集合( a标签 )

 

id_list = html.xpath('//a[contains(@href,"song?")]')  # 所有歌曲id集合

7.下载歌曲

 

base_url = '//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_name 和 music_id ,我仔细一看,获取的id_list集合里(也就是标签集合里)的id根本不是id,是代码,估计在这里音乐网站也做了相应的反扒机制。

 

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

 

base_url = '//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":"网络太拥挤,请稍候再试!"}

 

最后,我打印出music_url,点击进去,还是可以听歌和下载的,不知道这是为什么了

 

base_url = '//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爬虫时的一些经验,同时,我也想请教各位大神,像遇到了我这种问题了,我应该怎么办才能将这个网站的音乐文件爬到我的本地电脑里,还请各大神指点一二。


我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取学习教程,开发工具,代码大全,参考书籍

Python语言学习之利用Python爬虫爬取网站音乐

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程