python爬虫爬取网易云音乐歌手信息
Python安装文件可以直接去官网上下载 Python官网链接
在我们安装好python环境之后,需要安装一些爬虫时用到的库,最基本的有requests库,BeautifulSoup库
使用pip命令可以安装这两个库,点击链接可以看到添加pip命令到dos中的操作:pip命令添加到dos命令集
安装requests库命令:pip install requests
安装BeautifluSoup库命令:pip install bs4
如果显示当前pip版本过低,可以通过 pip install --upgrade pip命令来更新pip
安装后如果显示Successfully installed …等,表示已经安装成功,如果显示了很多红色的错误提示,则可以将刚才的更新命令重新执行几次,会成功的。
接下来分析网易云的歌手界面
URL中的id后面的属性值对应不同的歌手类型,其对应关系如下所示
id | 对应歌手类型 |
---|---|
1001 | 华语男歌手 |
1002 | 华语女歌手 |
1003 | 华语组合/乐队 |
2001 | 欧美男歌手 |
2002 | 欧美女歌手 |
2003 | 欧美组合/乐队 |
6001 | 日本男歌手 |
6002 | 日本女歌手 |
6003 | 日本组合/乐队 |
7001 | 韩国男歌手 |
7002 | 韩国女歌手 |
7003 | 韩国组合/乐队 |
4001 | 其他男歌手 |
4002 | 其他女歌手 |
4003 | 其他组合/乐队 |
而在每一个歌手类型界面,通过26个字母与其他进行分组
分组对应的是initial的属性值,其对应关系如下所示
initial | 对应分组 |
---|---|
A | 65 |
B | 66 |
… | … |
Z | 90 |
其他 | 0 |
可以看到其具有明显的对应关系
根据以上的,我们的各个URL就确定了,接下来我们在每个界面上爬取歌手的名字与歌手的id
右键点击检查,查看我们的界面html代码
可以看到,歌手的信息都是存储在ul标签的li标签下,我们只需要先得到ul标签,再将li标签里面的数据爬取出来,就可以得到我们需要的数据
可以看到该ul标签中class属性值是m-cvrlst m-cvrlst-5 f-cb, id属性是m-artist-box
在给ul标签的li标签的a标签中我们可以得到该歌手的id和姓名
其class属性值为nm nm-icn f-thide s-fc0
具体代码如下所示
import csv
import requests
from bs4 import BeautifulSoupheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}key_ids = {1001:"华语男歌手", 1002:"华语女歌手",1003:"华语组合或乐队", 2001:"欧美男歌手", 2002:"欧美女歌手", 2003:"欧美组合或乐队",6001:"日本男歌手",6002:"日本女歌手",6003:"日本组合或乐队",7001:"韩国男歌手",7002:"韩国女歌手",7003:"韩国组合或乐队",4001:"其他男歌手",4002:"其他女歌手", 4003:"其他组合或乐队"}ids = [1001, 1002, 1003, 2001, 2002, 2003, 6001, 6002, 6003, 7001, 7002, 7003, 7004]initials = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 0]base_url = "https://music.163.com/discover/artist/cat?id={}&initial={}"for id in key_ids.keys():with open(file = r'{}.csv'.format(key_ids[id]), encoding = "utf-8", mode = "a") as f:writer = csv.writer(f, lineterminator='\n')writer.writerow(["歌手ID", "歌手姓名"])f.close()print("正在爬取{}的信息".format(key_ids[id]))for initial in initials:try:with open(file=r'{}.csv'.format(key_ids[id]), encoding="utf-8", mode="a") as f:url = base_url.format(str(id), str(initial))response = requests.get(url, headers = headers)response.encoding = "utf-8"soup = BeautifulSoup(response.text, "html.parser")ul = soup.find("ul", class_ = "m-cvrlst m-cvrlst-5 f-cb")a_s = ul.find_all("a", class_ = "nm nm-icn f-thide s-fc0")for a in a_s:singer_id = a['href'].split('=')[1]singer_name = a.textwriter = csv.writer(f, lineterminator='\n')writer.writerow((singer_id, singer_name))print("正在写入{}{}的信息".format(key_ids[id],singer_name))f.close()except Exception as e:print(e)continue
生成的csv文件与py文件在同一个文件夹下
python爬虫爬取网易云音乐歌手信息相关推荐
- python爬虫爬取网易云音乐歌曲_Python网易云音乐爬虫进阶篇
image.png 年前写过一篇爬网易云音乐评论的文章,爬不了多久又回被封,所以爬下来那么点根本做不了什么分析,后面就再改了下,加入了多线程,一次性爬一个歌手最热门50首歌曲的评论,算是进阶版了- 思 ...
- python网易云_用python爬虫爬取网易云音乐
标签: 使用python爬虫爬取网易云音乐 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页版找一下你想要听的歌曲点击进去.按键盘F12打开网页调试工具,点击Ne ...
- python爬虫----爬取网易云音乐
使用python爬虫爬取网易云音乐 目录 使用python爬虫爬取网易云音乐 需要使用的模块 开始工作 运行结果 需要使用的模块 只需要requests模块和os模块即可 开始工作 先去网易云音乐网页 ...
- Python爬虫—爬取网易云音乐【热歌榜】歌曲的精彩评论(写入txt文本文件或者MySQL数据库)
最近在学Python爬虫,看了Blibili爬取网易云音乐评论的视频,视频中是将一首歌的评论存入json文件,我在此代码的基础上扩展了三点: 1.爬取热歌榜200首歌曲的精彩评论: ...
- python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...
1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...
- python爬虫爬取网易云音乐歌曲_如何用爬虫获取网易云音乐歌单中的歌曲?
--------------------------------- 泻药,以我抓取了307835首网易云音乐的歌单歌曲的经验,讲一下这个问题. 喜欢用Github的可以直接看我的项目源码,代码简单.具 ...
- python爬虫-爬取网易云音乐歌曲评论
本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 以及@lyrichu的博客 https://www.cnblogs.com/lyric ...
- python爬虫No.1|爬取网易云音乐歌手的前50首歌曲ID及名字
自学pythonのNo.5 引语 知识总结 Requests XPath 案例 曾经有这样的梗黑网易云音乐 实际上网易云是很不错的音乐软件之一.这个梗挺让我不舒服的,挫折谁都有,矫情没必要但对矫情之人 ...
- Python爬取网易云音乐歌手歌曲和歌单(爬虫)
Python爬取网易云音乐歌手歌曲和歌单 是 仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 ①找到要下载歌手歌曲的链接,这里用的是: https://music.16 ...
- python网络爬虫网易云音乐下载_python网络爬虫爬取网易云音乐
#爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...
最新文章
- 400多家单位、30余万科研人员,10多年奋斗!北斗卫星核心器件实现100%国产!(附:北斗研发建设历程​)...
- springboot集成测试时@RunWith和@SpringBootTest爆红不能测试
- Redis 未授权访问缺陷可轻易导致系统被黑
- SAP Spartacus unit detail 页面显示后自动 focus 设置的原理
- 在asp.net中调用process.start执行程序
- nginx文件系统大小_Nginx 了解一下?
- 自建ca根证书_独立根CA的安装与证书申请
- 两个linux系统拷贝文件,两台linux文件拷贝
- 红孩子艰难求生 苏宁易购或伸援手
- 常用http状态码说明,status
- iOS开发--保存数据到本地
- 全球光伏产业战加剧:美国考虑对进口太阳能电池施加紧急关税
- Java API 帮助文档中英文版下载
- php根据键值排序,数组根据某个键值排序
- 信用评分模型详解(下)之 信用评分系统搭建
- js的unshift()的使用
- 解决OneDrive卸载后重新安装无法启动或闪退的问题
- APISpace 星座查询API
- 【巨杉数据库SequoiaDB】影像平台分布式最佳实践 内容管理平台分布式实践
- Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器