python爬取音乐排行_python爬取网易云音乐热歌榜实例代码
首先找到要下载的歌曲排行榜的链接,这里用的是:
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爬取网易云音乐热歌榜实例代码相关推荐
- python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜 python爬取网易云音乐热歌榜实例代码...
想了解python爬取网易云音乐热歌榜实例代码的相关内容吗,FXL在本文为您仔细讲解python爬取网易云音乐热歌榜的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:python,网易热歌榜 ...
- python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜实例代码
首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...
- python爬取歌曲_python爬取网易云音乐热歌榜实例代码
首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...
- 爬虫python代码网易云_python爬取网易云音乐热歌榜实例代码
首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...
- python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...
1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...
- 网易云音乐android api_网易云音乐怎么发布个人Mlog?网易云音乐发布个人Mlog的教程介绍...
现在很多人都喜欢发Mlog,网易云音乐中也可以发布mlog啦,下面小编就为大家带来网易云音乐发布个人Mlog的具体操作方法,想知道的话就来看看吧. 网易云音乐怎么发布个人Mlog?网易云音乐发布个人M ...
- 电脑网易云音乐,拿下华研,网易云音乐终于解决1%的大难题,可阿里音乐以后咋办?...
3月1日,网易云音乐和华研国际宣布达成战略合作,将在华语音乐的宣传推广和原创音乐人的扶持培养方面,展开多样化的合作.其中,在音乐版权合作方面,网易云音乐已获得华研国际旗下目前全量音乐曲库的授权. 这件 ...
- 利用Python爬取基于AES对称加密算法的网易云音乐用户评论数据
本文利用Python2.7根据网易云音乐歌曲ID爬取了该歌曲的所有用户评论数据.以id是28875120的歌曲<小岁月太着急>为示例,通过Chrome的DevTools工具获取已加密评论数 ...
- 如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...
今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来. 爬取结果 环境 语言:Python 工具:Pycharm 导包 BeautifulSoup:用来解析源码,提取需要的元素. selenium ...
最新文章
- (转)flask的context机制
- 简单易懂的现代魔法——Play Framework攻略4
- Java 基本数据类型
- debian 使用 systemctl 且自启frp
- (SpringMVC)RestFul和Controller
- Verilog功能模块——串行数据转并行数据
- 苏联当年有多少应该拿菲尔兹奖的数学家被黑了?
- 【Deep Learning 五】课程二(mproving Deep Neural Networks),第一周(Setting up your Machine Learning Applicat)答案
- Git学习系列(一)初识Git
- ASP.NET MVC Json() 处理大数据异常解决方法 json MaxJsonLength
- 求教一个WEBSERVER与C的通信问题
- CZMDUI,简约而不简单的typecho模板
- 青龙面板2.8 Ninja扫码安装教程(二)
- 2021-08-02彻底解决Typora+PicGo-Core+SMMS图床的问题
- Win10自动更新永久关闭,有效的Win10强制更新关闭方法,禁止windows10自动更新,禁止update medic service ,win10显示更新并关机没有单独的关机按钮
- 阿里云年中618钜惠都有哪些活动-详细的为你列举
- oracle 建分区索引_Oracle的分区表和Local索引创建与维护
- 人工智能数学课高等数学线性微积分数学教程笔记(7. 最优化)
- 前端名词解释(持续更新)
- 在anaconda环境中安装tflearn模块