首先找到要下载的歌曲排行榜的链接,这里用的是:

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

然后更改你要保存的目录,目录要先建立好文件夹,例如我的是保存在D盘-360下载-网易云热歌榜文件夹内,就可以完成下载。

如果文件夹没有提前建好,会报错[Errno 2] No such file or directory。

代码实现:

from urllib import request

from bs4 import BeautifulSoup

import re

import requests

import time

class Music(object):

def __init__(self, baseurl, path):

head = {

"user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"

}

self.baseurl = baseurl

self.headers = head

self.path = path

def main(self):

html = self.askurl()

bs4 = self.analysis(html)

name1 = self.matching(bs4)

self.save(name1)

def askurl(self):

req = request.Request(url=self.baseurl, headers=self.headers)

response = request.urlopen(req)

html = response.read().decode("utf-8")

return html

def analysis(self, html):

soup = BeautifulSoup(html, "html.parser")

bs4 = soup.find_all("textarea")

bs4 = str(bs4)

return bs4

def matching(self, bs4):

rule0 = re.compile(r'"name":"(.*?)","tns":[],"alias":[]')

name0 = re.findall(rule0, bs4)

str = ""

for i in name0:

str = str + "," + i

str = str.replace("\xa0", " ")

rule1 = re.compile(r'jpg,(.*?),(.*?)","id":(\d*)')

name1 = re.findall(rule1, str)

return name1

def save(self, name1):

for j in name1:

print("正在下载:" + j[1] + " - " + j[0] + "...")

url = "http://music.163.com/song/media/outer/url?id=" + j[2]

content = requests.get(url=url, headers=self.headers).content

with open(self.path + j[1] + " - " + j[0] + ".mp3", "wb") as f:

f.write(content)

print(j[1] + " - " + j[0] + "下载完毕。\n")

time.sleep(0.5)

return

if __name__ == "__main__":

baseurl = "https://music.163.com/discover/toplist?id=3778678" # 要爬取的热歌榜链接

path = "D:/360下载/网易云热歌榜/" # 保存的文件目录

demo0 = Music(baseurl, path)

demo0.main()

print("下载完毕")

内容扩展:

Python3实战之爬虫抓取网易云音乐的热门评论

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import re

import urllib.request

import urllib.error

import urllib.parse

import json

def get_all_hotSong(): #获取热歌榜所有歌曲名称和id

url='http://music.163.com/discover/toplist?id=3778678' #网易云云音乐热歌榜url

html=urllib.request.urlopen(url).read().decode('utf8') #打开url

html=str(html) #转换成str

pat1=r'

  • .*

' #进行第一次筛选的正则表达式

result=re.compile(pat1).findall(html) #用正则表达式进行筛选

result=result[0] #获取tuple的第一个元素

pat2=r'

(.*?)' #进行歌名筛选的正则表达式

pat3=r'

.*?' #进行歌ID筛选的正则表达式

hot_song_name=re.compile(pat2).findall(result) #获取所有热门歌曲名称

hot_song_id=re.compile(pat3).findall(result) #获取所有热门歌曲对应的Id

return hot_song_name,hot_song_id

def get_hotComments(hot_song_name,hot_song_id):

url='http://music.163.com/weapi/v1/resource/comments/R_SO_4_' + hot_song_id + '?csrf_token=' #歌评url

header={ #请求头部

'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

}

#post请求表单数据

data={'params':'zC7fzWBKxxsm6TZ3PiRjd056g9iGHtbtc8vjTpBXshKIboaPnUyAXKze+KNi9QiEz/IieyRnZfNztp7yvTFyBXOlVQP/JdYNZw2+GRQDg7grOR2ZjroqoOU2z0TNhy+qDHKSV8ZXOnxUF93w3DA51ADDQHB0IngL+v6N8KthdVZeZBe0d3EsUFS8ZJltNRUJ','encSecKey':'4801507e42c326dfc6b50539395a4fe417594f7cf122cf3d061d1447372ba3aa804541a8ae3b3811c081eb0f2b71827850af59af411a10a1795f7a16a5189d163bc9f67b3d1907f5e6fac652f7ef66e5a1f12d6949be851fcf4f39a0c2379580a040dc53b306d5c807bf313cc0e8f39bf7d35de691c497cda1d436b808549acc'}

postdata=urllib.parse.urlencode(data).encode('utf8') #进行编码

request=urllib.request.Request(url,headers=header,data=postdata)

reponse=urllib.request.urlopen(request).read().decode('utf8')

json_dict=json.loads(reponse) #获取json

hot_commit=json_dict['hotComments'] #获取json中的热门评论

num=0

fhandle=open('./song_comments','a') #写入文件

fhandle.write(hot_song_name+':'+'\n')

for item in hot_commit:

num+=1

fhandle.write(str(num)+'.'+item['content']+'\n')

fhandle.write('\n==============================================\n\n')

fhandle.close()

hot_song_name,hot_song_id=get_all_hotSong() #获取热歌榜所有歌曲名称和id

num=0

while num < len(hot_song_name): #保存所有热歌榜中的热评

print('正在抓取第%d首歌曲热评...'%(num+1))

get_hotComments(hot_song_name[num],hot_song_id[num])

print('第%d首歌曲热评抓取成功'%(num+1))

num+=1

以上就是python爬取网易云音乐热歌榜实例代码的详细内容,更多关于python爬取网易云音乐热歌榜的资料请关注python博客其它相关文章!

python爬取音乐排行_python爬取网易云音乐热歌榜实例代码相关推荐

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

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

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

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

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

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

  4. 爬虫python代码网易云_python爬取网易云音乐热歌榜实例代码

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

  5. python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...

    1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...

  6. 网易云音乐android api_网易云音乐怎么发布个人Mlog?网易云音乐发布个人Mlog的教程介绍...

    现在很多人都喜欢发Mlog,网易云音乐中也可以发布mlog啦,下面小编就为大家带来网易云音乐发布个人Mlog的具体操作方法,想知道的话就来看看吧. 网易云音乐怎么发布个人Mlog?网易云音乐发布个人M ...

  7. 电脑网易云音乐,拿下华研,网易云音乐终于解决1%的大难题,可阿里音乐以后咋办?...

    3月1日,网易云音乐和华研国际宣布达成战略合作,将在华语音乐的宣传推广和原创音乐人的扶持培养方面,展开多样化的合作.其中,在音乐版权合作方面,网易云音乐已获得华研国际旗下目前全量音乐曲库的授权. 这件 ...

  8. 利用Python爬取基于AES对称加密算法的网易云音乐用户评论数据

    本文利用Python2.7根据网易云音乐歌曲ID爬取了该歌曲的所有用户评论数据.以id是28875120的歌曲<小岁月太着急>为示例,通过Chrome的DevTools工具获取已加密评论数 ...

  9. 如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...

    今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来. 爬取结果 环境 语言:Python 工具:Pycharm 导包 BeautifulSoup:用来解析源码,提取需要的元素. selenium ...

最新文章

  1. (转)flask的context机制
  2. 简单易懂的现代魔法——Play Framework攻略4
  3. Java 基本数据类型
  4. debian 使用 systemctl 且自启frp
  5. (SpringMVC)RestFul和Controller
  6. Verilog功能模块——串行数据转并行数据
  7. 苏联当年有多少应该拿菲尔兹奖的数学家被黑了?
  8. 【Deep Learning 五】课程二(mproving Deep Neural Networks),第一周(Setting up your Machine Learning Applicat)答案
  9. Git学习系列(一)初识Git
  10. ASP.NET MVC Json() 处理大数据异常解决方法 json MaxJsonLength
  11. 求教一个WEBSERVER与C的通信问题
  12. CZMDUI,简约而不简单的typecho模板
  13. 青龙面板2.8 Ninja扫码安装教程(二)
  14. 2021-08-02彻底解决Typora+PicGo-Core+SMMS图床的问题
  15. Win10自动更新永久关闭,有效的Win10强制更新关闭方法,禁止windows10自动更新,禁止update medic service ,win10显示更新并关机没有单独的关机按钮
  16. 阿里云年中618钜惠都有哪些活动-详细的为你列举
  17. oracle 建分区索引_Oracle的分区表和Local索引创建与维护
  18. 人工智能数学课高等数学线性微积分数学教程笔记(7. 最优化)
  19. 前端名词解释(持续更新)
  20. 在anaconda环境中安装tflearn模块

热门文章

  1. STC15单片机-ADC获取环境温度(NTC热敏电阻)
  2. Humanoid动画显示与Generic不一致
  3. c++ 数据结构 软件压缩/解压缩软件Szip(Huffman算法及应用)
  4. [译]网页移动端SEO权威指南
  5. 当科学家决定搞点“花里胡哨”的东西
  6. 杭电LCY-ACM算法入门习题(01-04)
  7. 回顾维乐VELO创始人余彩云漫漫创新路
  8. 山洪灾害监测预警系统解决方案
  9. #千锋逆战班 Java
  10. 斜率优化dp 的简单入门