网易云歌单音频爬取

写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助。

爬取对象:对于目前主流的几个音频播放网站,我选取的是网易云(个人对其“情有独钟”),可以在浏览器上直接搜索网易云音乐的网页即可。

我们爬取的是网易云网页上的歌单里的音频,
如图,点击歌单出现的分类,我们随意选取其中一个歌单进行爬取,这里选取的链接是https://music.163.com/#/playlist?id=2829883282,但是我们也注意到这个链接中带有“#”字符,我们审查它的源代码,查看它的Network,刷新页面,点击带有id=2829883282的一段点击进入headers,我们可以发现它的真实地址

它的真实地址是https://music.163.com/playlist?id=2829883282,前者我们可以认为是个“假地址”,目的也是反爬。

获取响应
正如之前博客提到的,既然是爬虫,就要获取网页的响应,所以我们可以编写代码:

import requests
if __name__=='__main__':header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
}#伪装爬虫response = requests.get("https://music.163.com/playlist?id=2829883282",headers = header)response.encoding = 'utf-8'html = response.textprint(html)

这里与之前的不同,设置了一个header,因为网易云有防爬(虽然目前还是可以不用),还是在之前的Network的headers中
将其加入到字典中伪装爬虫,然后还是一样的获取网页请求并打印:

之后也是同样要从这些信息中提取我们需要的内容,查看Response的选项
其中在标签为<ul class="f-hide">一行,有我们需要的信息。这段标签里包括了歌单的每首歌的名字还有部分链接,说到这,我们也同样需要对每首歌的链接地址进行分析,其实每首歌都有对应的外链,我们通过外链来访问它对应的ID,我们点开一首歌,都会有一个生成外链播放器,目前似乎用不了,说是有版权要求,这里提供一个很有用的小工具:外链提取。或者可以记住这个前缀:http://music.163.com/song/media/outer/url,后面就可以添加标签里的部分链接就可以获取其外链。

所以我们可以编写代码:

import requests
from bs4 import BeautifulSoup
if __name__=='__main__':header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
}response = requests.get("https://music.163.com/playlist?id=2829883282",headers = header)response.encoding = 'utf-8'html = response.textbf = BeautifulSoup(html,"lxml")texts = bf.find('ul', class_="f-hide")texts = texts.find_all('a')music_name = []music_url = []server = "http://music.163.com/song/media/outer/url"for i in texts:music_name.append(i.string)url = str(server) + i.get("href")[5:] + ".mp3"music_url.append(url)print(url)

如此我们就获取了歌单里的音频的所有外链:

爬取音频
获取完歌单音频的所有链接地址后,我们就可以爬取下载相应的音频歌曲了。音频的获取开始我是在其他博客学的,用的是urllib库中的urlretrieve方法,它可以直接将远程数据下载到本地,我们便可以在上述代码的前提下编写:

import urllib.request
num = len(music_name)
for i in range(num):urllib.request.urlretrieve(music_url[i],"%s.mp3"%music_name[i])#url和保存路径
print("下载完成")

运行之后我们在目录下可以看到音频
点击之后就可以听歌了
但是这个方法并不是时时有效,我相信很多伙伴用这个方法的时候遇到过这个问题,
其中文件的大小也不是很大,其实很大的原因是因为网易云网站的防爬设置,所以我也用了一个方式,爬取的几率更大,我们进入歌曲的外链的网页,然后同样进入Network然后获取User-Agent,然后一样的伪装爬虫,

写下如下代码:

num = len(music_name)
header1 = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
}
for i in range(num):res = requests.get(music_url[i],headers = header1)with open(str(music_name[i]) + '.mp3',"ab")as f:f.write(res.content)
print("下载完成")

运行后结果是相同的,可以选取自己需要的方法。
当然网易云中的会员曲目这里是爬取不了的(我们还是尊重会员权益),但是你如果有自己想听的歌曲,一样记住前缀,得到它的ID就可以进行爬取下载。

希望这篇博客对大家有帮助!

Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)相关推荐

  1. 【python爬虫】网易云歌单下载(scrapy+selenium)

    我又滚回来更新了,这一次我们的目标是网易云音乐,想要通过输入歌单的链接,然后把整个歌单的歌曲都下载下来,说做就做,看看这一次有会遇见怎样的问题把. 需要注意的点: 这一次使用的框架仍然是scrapy, ...

  2. Python 大作业 网易云歌单数据分析及可视化(参考多位博主文章)

    目录 项目概述 1.1项目来源 1.2需求描述 数据获取 2.1数据源的选取 2.2数据的获取 2.2.1 设计 2.2.2 实现 2.2.3 效果 数据预处理 3.1 设计 3.2 实现 3.3 效 ...

  3. 爬虫示例-网易云歌单

    爬取网易云音乐的歌单. 打开歌单的url: http://music.163.com/#/discov...,然后用lxml.html提取播放数3715.结果表明,我们什么也没提取到.难道我们打开了一 ...

  4. python下载自己网易云歌单的歌曲

    1.登录网页端网易云,复制cookie 2.输入歌单ID(就是后面的一串数字) 3.运行 网页端访问别人歌单只能看到20首歌,太难了,加上cookie还能访问自己的,还不错,虽然是标准音质 # -*- ...

  5. Python爬虫-selenium爬取网易云歌单

    文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...

  6. 运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用

    导航 ·运用Python--爬虫_网易云音乐热评 ·运用Python--游戏_四子棋_劳拉下棋 文章目录 导航 1.展示截图 2.代码 3.分析 常量的定义.界面设计 依次爬取歌曲信息 创建表格 爬取 ...

  7. Python爬虫爬取豆瓣TOP250和网易云歌单

    python爬虫(网易云)笔记 @(python学习) 先推荐看一下b站的视频链接如下:https://www.bilibili.com/video/BV12E411A7ZQ?from=search& ...

  8. Python爬虫实战: 爬取网易云歌单

    这篇文章,我们就来讲讲怎样爬取网易云歌单,并将歌单按播放量进行排序,下面先上效果图 1.用 requests 爬取网易云歌单 打开 网易云音乐 歌单首页,不难发现这是一个静态网页,而且格式很有规律,爬 ...

  9. 爬虫python代码网易云_爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

最新文章

  1. 合并排序(C语言实现)
  2. c语言静态图片做成动态效果,如何使静态图片做成动态效果?怎么让静态图片动起来...
  3. springboot 打jar 包部署时 读取外部配置文件
  4. java floatmath_《Java1.doc
  5. [转]Android 项目的代码混淆,Android proguard 使用说明
  6. android简单的夜间模式
  7. 发言稿开场白范文_万能演讲开场白范文
  8. 新疆计算机证相关信息技术,2019新疆中小学教师计算机考试资料:信息技术课程基本理念...
  9. 使用 Stacer 优化 Ubuntu 系统
  10. Tomcat 7 下载地址
  11. 高等数学学习笔记——第九讲——数列收敛的判定方法
  12. 阿里icon使用fontclass
  13. XML解析——Java中XML的四种解析方式
  14. JavaScript基础知识学习
  15. Delphi之API函数
  16. C语言程序设计实现调制解调,C语言程序设计课件.ppt
  17. 能否使用他人机动车的登记证书,号牌,行驶证,检验合格标志,保险标志?
  18. 万字泣血解析割韭菜内情,程序员别老想着做副业
  19. Poj 2387 Til the Cows Come Home 迪杰斯特拉(普通+优化)
  20. 【Qt】.qrc文件为项目添加图片、动画、音效、视频等资源文件

热门文章

  1. 自己 总结 一些 学习上 鼓励自己的 话~共勉哟
  2. ElasticSearch系列——Kibana,核心概念
  3. 身份证核验、实名认证接口助力实名制
  4. 盯上年轻人的今日头条,重新以内容出发还有多少可能?
  5. 有没有ai绘画教程?什么软件能实现ai绘画?
  6. 考试,一种严格的水平鉴定方法。
  7. 女大学生最爱不释手的网址
  8. 平面设计新手如何用PS制作出一张合成海报
  9. QQ飞车手游S25赛季什么时候更新?S25赛季段位继承表图文一览
  10. 植物识别库java_基于百度api的植物图片识别,人脸检测,人脸对比。