前面我们说过用python爬取网易云音乐的歌手信息,Python爬取网易云音乐歌手信息
今天我们来爬取一下酷狗音乐的歌手信息(歌手id和歌手名),如果环境没有安装好,可以参照前面爬网易云环境配置作为参考,这里不再叙述

我们先来到酷狗音乐的首页

我们来到歌手界面,其中我们要的数据都在这里

以上我歌手界面,通过对超链接的点击和url的变化,我们得到以下的对应规则

https://www.kugou.com/yy/singer/index/1-a-2.html
上面是华语男歌手以a开头的第一页的URL示例信息
每个界面上只有html的文件名不一样
第一个数字对应的页数,一般每一个字母开头的歌手信息有5页
第二个是歌手名开头字母,比如这里的a就是以a开头的歌手信息,其中有[A-Z]以及null,null对应其他的信息
第三个数字是对应的华语男歌手,华语女歌手等信息,其对应关系如下所示

数字 对应关系
2 华语男歌手
3 华语女歌 手
4 华语组合
5 日韩男歌手
6 日韩女歌手
7 日韩组合
8 欧美男歌手
9 欧美女歌手
10 欧美组合
11 其他

根据以上的分析,我们就可以得到每一个界面的URL,接下来我们来分析网页信息


可以看到,每个字母开头的第一页的信息上一部分歌手是有图片信息的,它的结构与没有图片信息的歌手不一样,我们要分开讨论
打开检查,看到带有图片信息的html源码

它们的信息都保存在ul标签的li子标签下,带有图片的歌手信息的ul的id是list_head

没有图片的歌手信息的保存在id为list1的div标签的ul标签下


在里面的a标签中,title属性是歌手的名字,href属性值包含了该歌手的id,只要得到该a标签,我们就得到了歌手的信息

通过歌手的id我们就可以跳转到对应的歌手具体界面来爬取更多的信息了

具体的Python代码如下所示

import requests
from bs4 import BeautifulSoup
import csv
page_index = {1, 2, 3, 4, 5}
ids = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
words = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'null']name = ['华语男歌手', "华语女歌手" ,"华语组合", "日韩男歌手", "日韩女歌手", "日韩组合", "欧美男歌手", "欧美女歌手", "欧美组合", "其他"]headers = {'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'
}initial_url = "http://www.kugou.com/yy/singer/index/{}-{}-{}.html"url = initial_url.format(2, 'a', 2)#最外层循环是对应的华语男歌手,女歌手等信息
#第二层对应的是A-Z加上其他等信息
#第三层是A-Z加其他里面的5页信息for id in ids:with open(file=r'{}.csv'.format(name[id - 2]), encoding="utf-8", mode="a") as f:writer = csv.writer(f, lineterminator='\n')writer.writerow(["歌手ID", "歌手姓名"])f.close()for word in words:for page in page_index:url = initial_url.format(page, word, id)print(url)response = requests.get(url, headers = headers)soup = BeautifulSoup(response.text, "html.parser")with open(file=r'{}.csv'.format(name[id - 2]), encoding="utf-8", mode="a") as f:# 如果为1的话说明当前界面有一部分歌手的信息带图片,分为list_head和list1两个部分if page == 1:list_header = soup.find("ul", id="list_head")lis = list_header.find_all("li")for li in lis:singer_id = li.a['href'].split("home/")[1].split(".")[0]singer_name = li.a['title']writer = csv.writer(f, lineterminator='\n')writer.writerow((singer_id, singer_name))print(singer_name + " " + singer_id)list1 = soup.find("div", id = "list1")for ul in list1.find_all("ul"):for li in ul.find_all('li'):singer_id = li.a['href'].split("home/")[1].split(".")[0]singer_name = li.a['title']writer = csv.writer(f, lineterminator='\n')writer.writerow((singer_id, singer_name))print(singer_name + " " + singer_id)#否则歌手信息显示的只有超链接没有图片,这种简单一点else:list1 = soup.find("div", id = "list1")for ul in list1.find_all("ul"):for li in ul.find_all('li'):singer_id = li.a['href'].split("home/")[1].split(".")[0]singer_name = li.a['title']writer = csv.writer(f, lineterminator='\n')writer.writerow((singer_id, singer_name))print(singer_name + " " + singer_id)f.close()

它会自动在当前.py文件的同一个目录下创建.csv文件,如下所示

用excel打开文件后如下所示

Python爬取酷狗音乐歌手信息相关推荐

  1. python爬取酷狗音乐排行榜

    本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下 转载于:https://www.cnblogs.com/Pythonmiss/p/10799941.html

  2. Python爬取酷狗音乐-详解(多图预警)

    目录 1.前言 2.分析一下 1. 2. 3. 3.代码解释 4.完整代码 5.结语 1.前言 前面发布了一篇关于QQ音乐爬取的教程,但对于我们这种文艺青年来说,一个平台的歌曲怎么够我们听的,也是因为 ...

  3. python爬取酷狗音乐top500_python获取酷狗音乐top500的下载地址 MP3格式

    下面先给大家介绍下python获取酷狗音乐top500的下载地址 MP3格式,具体代码如下所示: # -*- coding: utf-8 -*- # @Time : 2018/4/16 # @File ...

  4. python爬取酷狗音乐json数据为空_【Python3爬虫】下载酷狗音乐上的歌曲

    经过测试,可以下载要付费下载的歌曲(n_n) 准备工作:python3.5+pycharm 使用到的库:requests,re,json 步骤: 打开酷狗音乐的官网,输入想要搜索的歌曲(例如<天 ...

  5. Python 爬取酷狗音乐的思路分析

    经过多次抓包,发现酷狗音乐的歌名是通过hash 加密之后拼接到url中的,当你点击播放时,会发起一个ajax请求,并且携带hash值和之间戳,但是我发现时间戳有没有都无所谓,response 中会有该 ...

  6. python爬取酷狗音乐_Python爬取酷狗音乐

    在常见的几个音乐网站里,酷狗可以说是最好爬取的啦,什么弯都没有,也没加密啥的,所以最适合小白入门爬虫 本篇针对爬虫零基础的小白,所以每一步骤我都截图并详细解释了,其实我自己看着都啰嗦,归根到底就是两个 ...

  7. python爬取酷狗音乐url_python-从酷狗下载爬取自己想要的音乐-可以直接拿来体验哟...

    因为最近发现咪咕音乐版权好多,当时我就在想是不是可以爬取下来,然后花了一些时间,发现有加密,虽然找到了接口,但是只能手动下载VIP歌曲,对于我们学IT的人来说,这是不能忍的,于是就懒得去解密抓取了,但 ...

  8. 使用scrapy 爬取酷狗音乐歌手及歌曲名并存入mongodb中

    备注还没来得及写,共爬取八千多的歌手,每名歌手平均三十首歌曲算,大概二十多万首歌曲 run.py 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 ...

  9. python爬取酷狗音乐_Python实例---爬去酷狗音乐

    项目一:获取酷狗TOP 100 排名 文件&&歌手 时长 效果: 附源码: import time import json from bs4 import BeautifulSoup ...

最新文章

  1. 从源代码剖析Mahout推荐引擎
  2. nginx ngx_http_mirror_module模块
  3. 香草 jboss 工具_如何为JBoss Developer Studio 8设置BPM和规则工具
  4. mysql修改用户密码1133_后台修改mysql用户密码后无法连接
  5. docker上传镜像到仓库
  6. Pygame最小开发框架
  7. 【转】【真正福利】成为专业程序员路上用到的各种优秀资料、神器及框架
  8. 第二阶段冲刺第八天(6月7号)
  9. POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)
  10. java jsch shell_仅在JSch shell通道中获取特定命令的输出
  11. Hbase体系架构与安装
  12. 常见报错_mysql常见报错之SELECT list is not in GROUP BY clause
  13. latex 伪代码 return怎么写 不换行怎么办
  14. 用Python爬虫爬取“女神吧”上的照片。
  15. 骑士CMS模版注入+文件包含getshell漏洞复现
  16. “野火FreeRTOS教程”第9章知识点总结-空闲任务与阻塞延时
  17. oracle数据库rman备份与还原
  18. 多媒体视频处理工具FFmpeg的简介及安装
  19. JDY-24M蓝牙应用探索
  20. DOS windows PE三者有什么区别

热门文章

  1. matlab按图像边缘抠图_【PS抠图系列14】可爱的狗狗
  2. lzg_ad:XPE中的Remote Procedure Call (RPC) Locator服务无法启动
  3. 记录一个删库跑路的技巧(如何快速删除数据库下面的所有表)
  4. 深度解析高通RF360移动射频前端解决方案
  5. REST Assured 17 - 设置默认的RequestSpecification
  6. oracle dbms_metadata,DBMS_METADATA报错解决方法
  7. 苹果开发者账号(三)
  8. 关于IOS中设置中找不到开发者选项的解决办法
  9. 1447D Catching Cheaters
  10. Springboot企业邮箱发送邮件