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'<ul class="f-hide"><li><a href="/song\?id=\d*?" rel="external nofollow" rel="external nofollow" >.*</a></li></ul>' #进行第一次筛选的正则表达式
 result=re.compile(pat1).findall(html) #用正则表达式进行筛选
 result=result[0] #获取tuple的第一个元素

 pat2=r'<li><a href="/song\?id=\d*?" rel="external nofollow" rel="external nofollow" >(.*?)</a></li>' #进行歌名筛选的正则表达式
 pat3=r'<li><a href="/song\?id=(\d*?)" rel="external nofollow" >.*?</a></li>' #进行歌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爬取网易云音乐热歌榜的资料请关注我们其它相关文章!

(0)

相关推荐

  • python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comments(res): comments_json = json.loads(res.text) hot_comments = comments_json['hotComments'] with open("hotcmments.txt", 'w', encoding = 'utf-8') a

  • Python实现的爬取网易动态评论操作示例

    本文实例讲述了Python实现的爬取网易动态评论操作.分享给大家供大家参考,具体如下: 打开网易的一条新闻的源代码后,发现并没有所要得评论内容. 经过学习后发现,源代码只是一个完整页面的"骨架",而我所需要的内容是它的填充物,这时候需要打开工具里面的开发人员工具,从加载的"骨肉"里找到我所要的评论 圈住的是类型 找到之后打开网页,发现json类型的格式,用我已学过的正则,bs都不好闹,于是便去了解了正则,发现把json的格式换化成python的格式后,用列表提取内容

  • Python实现模拟登录网易邮箱的方法示例

    本文实例讲述了Python实现模拟登录网易邮箱的方法.分享给大家供大家参考,具体如下: #coding:utf-8 import urllib2,urllib import cookielib from bs4 import BeautifulSoup #设置代理IP proxy_support = urllib2.ProxyHandler({'http':'120.197.234.164:80'}) #设置cookie cookie_support = urllib2.HTTPCookiePr

  • 详解python selenium 爬取网易云音乐歌单名

    目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: url = 'https://music.163.com/#/discover/playlist/' from selenium import webdriver import time # 创建浏览器对象 window = webdriver.Chrome('./chromedriver') win

  • 15行Python代码实现网易云热门歌单实例教程

    0. 引言 马上314情人节就要来了,是否需要一首歌来抚慰你,受伤或躁动的心灵.来吧,今天教你用15行代码搞定热门歌单.学起来并听起来吧. 本文使用的是Selenium模块,它是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等等操作,对于一些 JavaScript 渲染的页面来说,此种抓取方式非常有效.另外采用了Chrome浏览器配合Selenium工作. 下面话不多说了,来一起看看详细的介绍吧 1. 环境 操作系统:Windows Python版本:3.7.2 2.

  • 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 i

  • python爬取网易云音乐排行榜实例代码

    目录 网易云音乐排行榜歌曲及评论爬取 一.模拟登录 二.排行榜数据爬取 三.排行榜评论获取 总结 网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录.iframe标签定位.页面元素提取. 在利用selenium定位元素并取值的过程中遇到问题.比如xpath正确但无法定位,在进行翻页提取评论的过程中,利用selenium似乎不能提取不同页的数据,比如,明明定位的第三页的评论数据,而只能返回第一页的评论数据. 一.模拟登录 selenium 定位元素模拟人的操作进行登录,直接上

  • Python爬取网易云音乐热门评论

    最近在研究文本挖掘相关的内容,所谓巧妇难为无米之炊,要想进行文本分析,首先得到有文本吧.获取文本的方式有很多,比如从网上下载现成的文本文档,或者通过第三方提供的API进行获取数据.但是有的时候我们想要的数据并不能直接获取,因为并不提供直接的下载渠道或者API供我们获取数据.那么这个时候该怎么办呢?有一种比较好的办法是通过网络爬虫,即编写计算机程序伪装成用户去获得想要的数据.利用计算机的高效,我们可以轻松快速地获取数据. 那么该如何写一个爬虫呢?有很多种语言都可以写爬虫,比如Java,php,py

  • Python爬取网易云音乐上评论火爆的歌曲

    前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行榜和按评论排序的功能,没关系,本文就使用爬虫给大家爬一爬网易云音乐上那些热评的歌曲. 结果 对过程没有兴趣的童鞋直接看这里啦. 评论数大于五万的歌曲排行榜 首先恭喜一下我最喜欢的歌手(之一)周杰伦的<晴天>成为网易云音乐第一首评论数过百万的歌曲! 通过结果发现目前评论数过十万的歌曲正好十首,通过这

  • Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单

    此货很干,跟上脚步!!! Cookie cookie是什么东西? 小饼干?能吃吗? 简单来说就是你第一次用账号密码访问服务器 服务器在你本机硬盘上设置一个身份识别的会员卡(cookie) 下次再去访问的时候只要亮一下你的卡片(cookie) 服务器就会知道是你来了,因为你的账号密码等信息已经刻在了会员卡上 需求分析 爬虫要访问一些私人的数据就需要用cookie进行伪装 想要得到cookie就得先登录,爬虫可以通过表单请求将账号密码提交上去 但是在火狐的F12截取到的数据就是, 网易云音乐先将你的

  • Python爬取网易云歌曲评论实现词云图

    目录 前言 环境使用 代码实现 先是安装.导入所需模块 1. 创建一个浏览器对象 2. 执行自动化 下拉页面, 直接下拉到页面的底部 3.解析数据 保存数据 翻页 保存为txt文件 运行代码得到结果 再做个词云 导入相关模块 读取文件数据 词云图 分词<中文(词语)> 基于结果 合并 创建词云图 最后效果 前言 emmmm 没什么说的,想说的都在代码里 环境使用 Python 3.8 解释器 3.10 Pycharm 2021.2 专业版 selenium 3.141.0 本次要用到selen

  • 利用Python爬取微博数据生成词云图片实例代码

    前言 在很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,一年一度的虐汪节,是继续蹲在角落默默吃狗粮还是主动出击告别单身汪加入散狗粮的行列就看你啦,七夕送什么才有心意,程序猿可以试试用一种特别的方式来表达你对女神的心意.有一个创意是把她过往发的微博整理后用词云展示出来.本文教你怎么用Python快速创建出有心意词云,即使是Python小白也能分分钟做出来.下面话不多说了,来一起看看详细的介绍吧. 准备工作

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

    前言 之前刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了.于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论,于是写了这个抓取网易云音乐热歌榜里的热评的爬虫.我也是刚刚入门爬虫,有什么意见和问题欢迎提出,大家一起共同进步. 废话就不多说了-下面来一起看看详细的介绍吧. 我们的目标是爬取网易云中的热歌排行榜中所有歌曲的热门评论. 这样既可以减少我们需要爬取的工作量,又可以保存到高质量的评论. 实现分析 首先,我们打开网易云网

随机推荐