1.首先导入2个第三方库,json库是标准库,用到的有Requests库,Beautisoup库,json库
2.分析网站,当然是f12 开发者工具了,firefox浏览器的开发者工具个人用着比chrome的好用一点。 用开发者工具之前要先明白你要找什么数据,我想抓取的是霹雳布袋戏的所有歌曲信息(顺便安利下霹雳布袋戏)

抖个机灵,通过我仔细观察,我发现通过改url的limit参数(每页显示的专辑数量),offset参数(当前页)就能获取某用户的所有专辑,这样能避免抓取的数据有很多页而要考虑下一页的情况。
"https://music.163.com/artist/album?id=12639&limit=200&offset=0"
为了验证我的想法,我用的是chrome的servistate插件,

确认这个接口就是我们需要的。
 
 3.动手写第一个函数,发送request请求,返回它的二进制格式,因为这个函数请求json数据的时候也会用到。
 

4.然后就是beautifulsoup库提取出我们想要的数据

通过观察get请求的响应内容,我发现专辑id放在"tit s-fc0"的标签里,同理找到专辑name和专辑的创作时间,我们用beautifulsoup对象的finda_all方法,将之提取出来。
5.专辑的id有了,我想要的是每一张专辑里面所有曲子的详细信息,同理我们再去找有歌曲信息的请求,找了半天发现每首曲子的信息是以json格式传给我们的,并且是个post请求,有两个参数是通过js加密生成的,一个是当前时间戳加密一个是随机字符,反正就是很麻烦。找了半天,又发现有一个通过get请求就可以获取到数据的接口。
"http://music.163.com/api/v1/resource/comments/R_SO_4_"+songid
就是这个接口,还是使用chrome的servistate插件验证一下我的猜测,

我们发现它返回的是json字符串,然后我们通过json库和beautifulsoup库解析提取出我们需要的数据。

我们需要的数据就抓取下来了,然后用xlwt库写入到excel表格中。学会使用开发者工具,需要明白的不只是python的知识,还需要html的知识,知道request请求和response响应。

下面贴出完整代码

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import json
print("开始抓取数据,请保持网络畅通。。。")
url='https://music.163.com/album?id=72301648'
header = {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
def gethtml(url):     #获取专辑的htmltry:response=requests.request('get',url,headers=header,timeout=30)response.raise_for_status()response.encoding=response.apparent_encodinghtml=response.contentexcept:print("error:网络原因爬取出错!")return html
def resolvehtml(html):   #解析专辑的html,返回最终要输出的id(数字类型),name,title,专辑中的歌曲数量index=BeautifulSoup(html,"html.parser")lsul=index.find_all(class_="f-hide")[0]    #返回的是无序列表,歌曲的id和name<li><a href="/song?id=1301575103">暗夜曙光</a>,用列表存储title=(index.title.string)[:-21]   #专辑的标题,字符串切片去掉最后21位songid = []songname = []songnum=len(lsul)for i in range(songnum):songid.append(lsul.find_all("a")[i]["href"]) #取出所有a标签的href属性,并且存储为列表类型songname.append((lsul.find_all("a")[i].string))#取出所有a标签的内容,并且存储为列表类型songid[i]=int((str(songid[i]))[9:]) #将id信息改为纯数字idreturn songid,songname,title,songnum
def getcomment(url):a=resolvehtml(gethtml(url))songid=a[0]songname=a[1]title=[2]songnum=a[3]url=[]commentnum=[]hotcomment=[]for i in range(songnum):#执行该专辑歌曲数次程序url.append("http://music.163.com/api/v1/resource/comments/R_SO_4_"+str(songid[i]))r=gethtml(url[i])dic=json.loads(r)commentnum.append(dic['total'])hotcom = dic['hotComments']if (len(hotcom) == 0):hotcomment.append("最热评论:无")else:hotdic = hotcom[0]hotcomment.append(hotdic["content"])return songname,songid,songnum,hotcomment,commentnum#返回一张专辑爬取到的所有有用信息,id,name,专辑歌曲数,热评,热评数
def albuminfo():url = "https://music.163.com/artist/album?id=12639&limit=200&offset=0"#霹雳布袋戏的所有专辑页urlmenuid = []menuname = []menutime = []r=gethtml(url)txt1=BeautifulSoup(r,'html.parser')for i in range(181):  # 优化不够,后面出新专辑的时候改变参数id =txt1.find_all(class_="tit s-fc0")menuid.append(id[i]["href"])menuid[i] =str(menuid[i])[10:]name = txt1.find_all(class_="dec dec-1 f-thide2 f-pre")menuname.append(name[i]["title"])time = txt1.find_all(class_="s-fc3")menutime.append(time[i].string)return menuname,menuid,menutime
fp = open("test.txt", 'a',encoding="utf-8")
def main():result=albuminfo()for i in range(181):url='https://music.163.com/album?id='+(result[1])[i]fp.write(str(getcomment(url)))fp.close()
main()

python爬取网易云音乐数据相关推荐

  1. python爬取网易云音乐排行榜数据

    python爬取网易云音乐排行榜歌曲及评论 网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录.iframe标签定位.页面元素提取. 在利用selenium定位元素并取值的过程中 ...

  2. python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜 python爬取网易云音乐热歌榜实例代码...

    想了解python爬取网易云音乐热歌榜实例代码的相关内容吗,FXL在本文为您仔细讲解python爬取网易云音乐热歌榜的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python,网易热歌榜 ...

  3. python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜实例代码

    首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...

  4. Python爬取网易云音乐歌手歌曲和歌单(爬虫)

    Python爬取网易云音乐歌手歌曲和歌单 是 仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 ①找到要下载歌手歌曲的链接,这里用的是: https://music.16 ...

  5. python爬音乐-用python爬取网易云音乐歌曲的歌词

    今天我来分享一下如何用python爬取网易云音乐歌曲的歌词,网易云音乐的歌词的爬取思路同前面介绍过的爬取网易云音乐的歌曲评论的爬取思路一致.由于两者的加密思路都是一致的,因此我们只需分析出被加密了的参 ...

  6. python爬取网易云音乐热评_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

  7. Python爬取网易云音乐热歌榜(爬虫)

    Python爬取网易云音乐热歌榜歌曲,并下载到本地 找到要下载歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更 ...

  8. python爬取网易云音乐生成王力宏歌曲词云

    python爬取网易云音乐生成王力宏歌曲词云 # -*- coding:utf-8 -*- # 网易云音乐,通过歌手id生成词云 import requests import sys,re,os fr ...

  9. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  10. 用Python爬取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

最新文章

  1. 专访 | 微软首席数据科学家谢梁:从经济学博士到爬坑机器学习,这十年我都经历了啥?
  2. Linux的文件管理命令
  3. 看完让你彻底理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
  4. 《软件工艺师:专业、务实、自豪》一2.8 小结
  5. 外国人最常说的100个“中国词”出炉,第一个你绝对想不到…
  6. cubic-bezier_带CSS中的示例的cube-bezier()函数
  7. Onvif之wsdl地址
  8. 一个很简单的例子,从汇编层次理解函数调用
  9. fanuc系统屏蔽服务器,FANUC伺服轴的屏蔽方法
  10. SLAM之PTAM学习笔记
  11. 高分二号影像数据预处理及裁剪过程
  12. python周环比增长率怎么算_Pandas实现计算同比、环比
  13. windows 通过快捷键来复制粘贴当前日期时间到剪贴板
  14. 用matlab求二重积分例题_数学建模matlab例题参考及练习
  15. Java Web课程设计
  16. oracle死锁级别locked_mode
  17. 全链路压测那点事(一)
  18. 为什么我们放弃了 Vue?Vue 和 React 深度对比
  19. 基于php的海贼王动漫网站
  20. HTTP之Chunk

热门文章

  1. mtk 充电出错问题
  2. 多类别车辆跟踪-模型训练、评估、预测、优化到部署的全流程方案_副本
  3. Java中的native方法的使用
  4. 斐讯k3c V1.7D frp升级
  5. otdr测试曲线图软件通用,OTDR常见测试曲线
  6. jquery 原生控件 超大文件分片校验上传 易迁移 webuploader springboot
  7. STM32定时器输出pwm波
  8. Docker资源配置方法(Cgroup)
  9. php正则表达式 w3c,正则表达式 – 匹配规则 | w3cschool菜鸟教程
  10. magento yandex插件 moneta插件 qiwi插件 俄罗斯银行