需求分析

每当歌荒时,总想找那些播放量比较高的歌单听,毕竟这么多人选择的歌单歌曲质量总会有保证.

爬取目标

本文将提取网易云音乐 播放量在1000万 以上的歌单名称,播放量和链接地址.

准备工作

保证电脑安装了 python3.6 和已经安装好了 selenium 库.没安装的可通过 在终端输入 pip install selenium 进行安装.

爬取分析

打开歌单的 url:http://music.163.com/#/discover/playlist.用 Chrome 的开发者工具 (F12) 分析.

页面详情

发现歌单信息在<ul class='m-cvrlst f-cb' id='m-pl-container'>下的 <li>标签中.

因此我们可以通过以下代码获取歌单信息:from selenium import webdriveurl = http://music.163.com/#/discover/playlistbrowser = webdrive.Chrome()brows.get(url)data = browser.find_element_by_id('m-pl-container').find_elements_by_tag_name('li')

但是我们会发现无法获取歌单信息,原因是注意看图片最前面发现有个 <iframe>标签,因此导致我们无法定位,故需要在获取数据前加一行代码定位browser.switch_to.frame('contentFrame'),这样我们就可以获取数据了.关于selenium定位的问题可以访问https://blog.csdn.net/huilan_same/article/details/52200586 更详细的了解.

获取歌单详细信息

页面详情

通过上图我们发现歌单名和地址在<a title="| 粤语 | 宇宙粒子与每个人的爱情" href="/playlist?id=2220301639" class="msk"></a>中,播放量在<span class="nb">14万</span>中.接下来我们来获取首页的歌单信息.抓取首页

from selenium import webdriverimport csvbrowser = webdr.Chrome()csv_file = open('playlist.csv', 'w', newline='', encoding='utf-8') #注意此处必须得加 encoding='utf-8,不然遇到歌单名包含特殊字符会报错writer = csv.writer(csv_file)writer.writerow(['标题', '播放数', '链接'])url = 'http://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0'browser.get(url)browser.switch_to.frame('contentFrame')data = browser.find_element_by_id('m-pl-container').find_elements_by_tag_name('li')for i in range(len(data)): nb = data[i].find_element_by_class_name('nb').text if '万' in nb and int(nb.split('万')[0]) > 1000: msk = data[i].find_element_by_css_selector('a.msk') writer.writerow([msk.get_attribute('title'), nb, msk.get_attribute('href')])csv_file.close()

获取所有页面

页面数据

通过分析我们发现每一页的地址只是 offset 发生了偏移,即每一页加 35,有人可能会想到用改变 offset 的方法来获得所有页面数据,我试过,会报错,无法找到页面,不知道是我方法不对还是怎么滴,有兴趣的可以试一下这里我们采取另一种方法来获取所有页面数据.

观察最后一行有个文本是下一页,而且 class='zbtn znxt',前面显示页面数据的class='zpgi'.一次我们可以通过class='zbtn znxt'来获取所有数据信息.

注意:使用webdrive.Chrome()会打开浏览器,每跳一个页面就会打开浏览器一次.我们可以将其换成chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') browser = webdriver.Chrome(chrome_options=chrome_options),它把网站加载到内存并执行页面上的JavaScript,但是它不会向用户展示网页的图形界面.

完整代码

from selenium import webdriverimport csvchrome_options = webdriver.ChromeOptions()chrome_options.add_argument('--headless')browser = webdriver.Chrome(chrome_options=chrome_options)csv_file = open('playlist.csv', 'w', newline='', encoding='utf-8')writer = csv.writer(csv_file)writer.writerow(['标题', '播放数', '链接'])url = 'http://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=0'while url != 'javascript:void(0)': browser.get(url) browser.switch_to.frame('contentFrame') data = browser.find_element_by_id('m-pl-container').find_elements_by_tag_name('li') for i in range(len(data)): nb = data[i].find_element_by_class_name('nb').text if '万' in nb and int(nb.split('万')[0]) > 1000: msk = data[i].find_element_by_css_selector('a.msk') writer.writerow([msk.get_attribute('title'), nb, msk.get_attribute('href')]) url = browser.find_element_by_css_selector('a.zbtn.znxt').get_attribute('href')csv_file.close()

骚年,还在为歌荒发愁吗?python教你爬取网易云热门歌单相关推荐

  1. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名

    目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...

  2. python爬虫爬取音乐_利用python爬虫实现爬取网易云音乐热歌榜

    利用python爬虫实现爬取网易云音乐热歌榜 发布时间:2020-11-09 16:12:28 来源:亿速云 阅读:102 作者:Leah 本篇文章给大家分享的是有关利用python爬虫实现爬取网易云 ...

  3. selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称

    翻页爬取网易云音乐歌单作者和标题 案例目的: 通过翻页selenium操作网易云音乐,介绍如何切换iframe框架以及如何使用selenium定位数据所在的节点. 代码功能: 输入下载的数据页数,自动 ...

  4. Python爬取网易云音乐歌单名以及歌单标签

    爬取网易云音乐歌单名以及歌单标签 正则表达式 .可以匹配任意字符,所以:要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个 ...

  5. Python爬取网易云热歌榜所有音乐及其热评

    获取特定歌曲热评: 首先,我们打开网易云网页版,击排行榜,然后点击左侧云音乐热歌榜,如图: 关于如何抓取指定的歌曲的热评,参考这篇文章,很详细,对小白很友好: 手把手教你用Python爬取网易云40万 ...

  6. python爬取网易云热歌榜

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

  7. Python Scrapy 多线程爬取网易云音乐热门歌单信息(手把手教学)

    下面我将向大家介绍使用 Scrapy 爬虫获取 网易云音乐 的热门歌单信息. 这里是网易云音乐的歌单页面,可以看到歌单信息非常得结构化,是非常适合爬虫来爬取的. URL:全部歌单 - 歌单 - 网易云 ...

  8. Python爬虫-selenium爬取网易云歌单

    文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...

  9. 【Python实战】爬取网易云音乐用户听歌排行,来制作一张Ta最爱歌手的词云图

    前言 大家好,我是Samaritan. 平时写代码的时候,作为云村用户的一员,我当然也是最爱开着网易云音乐(以下简称网易云). 大家都知道在网易云里你可以查看好友或是任意用户的听歌排行(假使Ta设置全 ...

最新文章

  1. 数据中心可以不设置柴发吗?
  2. Java .Net Byte数组存储差异以及解决方法
  3. ecology9 后端开发环境搭建_利用Vagrant快速搭建开发环境
  4. 前端每日实战:163# 视频演示如何用原生 JS 创作一个多选一场景的交互游戏(内含 3 个视频)...
  5. oracle的ora01504,Oracle中的ORA-01548: active rollback segment '_SYSSMU1$' found
  6. Facebook WhatsApp开放「数据下载」;iPhone需求疲软引发恐慌;今日头条「更名」| CSDN 极客头条...
  7. 【吐血经验】在 windows 上安装 spark 遇到的一些坑 | 避坑指南
  8. 普通人在互联网还有机会么?
  9. Android获取md5和sha
  10. 74HC595中文资料
  11. 如何注册 MSDN AA
  12. matlab 图例自定义,matlab实现自定义曲线图以及图例
  13. halcon代码LAWS纹理滤波
  14. C#开发实战1200例(第I卷)目录
  15. mysql启动集群报连接本地失败_Docker的mysql集群节点可以正常创建,但无法正常连接到宿主机的mysql应该如何解决?...
  16. 不正经技术研究,键盘侠,你武器可能有个坑!!
  17. linux多线程编程--学习笔迹4
  18. Spring Cloud:熔断器Hystrix
  19. Windows 下使用pip install 安装出现报错ERROR: Cannot unpack file解决办法
  20. 电子数字计算机的应用,你了解电子数字计算机的发展吗?人类是如何应用计算机技术的?...

热门文章

  1. 【转】打开,另存为,属性等14个javascript代码
  2. [HNOI2013] 切糕
  3. 百科知识 已知三角形三条边长,如何求解三角形的面积
  4. 利用数组求前n个质数
  5. Eclipse debug ‘Source not found’
  6. 使用cronolog自动分割apache的日志。
  7. udp helper 的使用
  8. 数据挖掘-二手车价格预测 Task03:特征工程
  9. 大数据分析对企业运营的价值体现
  10. 大数据营销平台该如何选择