Python 爬虫之下载歌曲(二)

获取深夜emo云歌单信息


文章目录

  • 获取深夜emo云歌单信息
  • 前言
  • 一、基本流程
  • 二、代码编写
    • 1.基本要素代码
    • 2.获取歌名和链接信息
    • 3.获取歌曲的作者信息
    • 4.将上面三个列表遍历保存
  • 三、效果展示


前言

换个平台,爬歌深夜网抑云平台的歌单的相关信息,关于作者、歌名、链接等信息。


一、基本流程

打开网抑云平台的歌单,复制这个歌单的网页地址。输入到我下面写的程序里,然后执行程序,就OK了。如下图所示:

在这里插入图片描述


二、代码编写

1.基本要素代码

代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time# 播放歌单的网页地址  比如:https://music.163.com/#/playlist?id=26467411
video_url = ''
# 创建一个对象实例,用来表示用哪个浏览器爬取
driver = webdriver.Firefox()
# 某个歌单的地址
driver.get(video_url)
# 等待一下,等打开网页
time.sleep(5)music_url_list = []
music_title_list = []
music_artist_list = []# 先加载框架,否则下面的代码无法获取内容
driver.switch_to.frame(driver.find_element(by=By.ID, value='g_iframe'))

以上代码,基本上都是爬虫的基本套路,可以看看我之前写的爬虫教程就明白了。

主要是最后一行代码需要解释一下,以前没有遇到过:
这段代码的作用是在 Selenium 中切换到一个特定的 HTML iframe(内联框架)元素中。以下是对这段代码的详细解释:

driver.switch_to.frame(): 这是 Selenium 提供的一个方法,用于切换当前操作的上下文到指定的 iframe 元素中。在网页中,iframe 是一种常用的嵌入其他网页内容的技术,它可以在一个网页内部显示另一个网页的内容。driver.find_element(by=By.ID, value='g_iframe'): 这段代码使用 find_element() 方法来查找具有给定 ID 的 HTML 元素。在这个例子中,我们通过 By.ID 参数指定查找方式为 ID,然后通过 value='g_iframe' 指定了要查找的元素 ID 为 "g_iframe"。整个语句 driver.switch_to.frame(driver.find_element(by=By.ID, value='g_iframe')) 的作用是:首先找到 ID 为 "g_iframe" 的 iframe 元素,然后将 Selenium 的操作上下文切换到这个 iframe 中。这样,后续的 Selenium 操作(如查找元素、点击按钮等)就会在这个 iframe 范围内进行,而不是在主页面上。

之所以需要这样做,是因为在某些情况下,网页中的某些元素(如按钮、链接等)可能存在于 iframe 中,而不在主页面上。如果不先切换到对应的 iframe,Selenium 将无法找到或操作这些元素。因此,这段代码是确保后续操作能够正确执行的重要步骤。


2.获取歌名和链接信息

代码如下:

# 获取歌名和链接相关信息
music_list = driver.find_elements(by=By.CSS_SELECTOR, value='.txt a')
# 遍历获取到的所有信息
for music in music_list:# 获取其中的歌名和链接music_url = music.get_attribute('href')music_title = music.find_element(by=By.TAG_NAME, value='b').get_attribute('title')# 将歌曲名字列表中的\xa0 换成空格for i in range(len(music_title_list)):music_title_list[i] = music_title_list[i].replace('\xa0', ' ')# 将信息添加到列表中music_url_list.append(music_url)music_title_list.append(music_title)
  1. 东西很杂,先把相关的信息都获取到,合成一个列表。
  2. 遍历这些信息,从中筛选出歌名和链接。
  3. 上面获取的信息中的空格会变成 \xa0,所以需要把它转换回来。
  4. 然后将筛选出的信息各自添加到列表中去。

3.获取歌曲的作者信息

代码如下:

# 获取所有的歌曲的作者
music_artists = driver.find_elements(by=By.CSS_SELECTOR, value='.text')# 遍历获取到的所有信息
for music_artist in music_artists:# 获取其中作者的名字music_artis = music_artist.get_attribute('title')if music_artis:# 将作者的名字添加到列表中music_artist_list.append(music_artis)

基本上就是重复上一节的步骤。


4.将上面三个列表遍历保存

代码如下:

# 将每首歌的以上信息一一对应起来
i = 0
while i < len(music_url_list):song_info = f'歌曲名称:{music_title_list[i]}   歌曲作者:{music_artist_list[i]}   歌曲链接:{music_url_list[i]}'print(song_info)i += 1with open('music.txt', 'a', encoding='utf-8') as f:f.write(song_info + '\n')

一个简单的一边遍历一边保存的操作。


三、效果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云OpenSearch-LLM智能问答故障的一天

上周五使用阿里云开放搜索问答版时&#xff0c;故障了一整天&#xff0c;可能这个服务使用的人比较少&#xff0c;没有什么消息爆出来&#xff0c;特此记录下这几天的阿里云处理过程&#xff0c;不免让人怀疑阿里云整体都外包出去了&#xff0c;反应迟钝&#xff0c;水平业余&a…

【JavaWeb学习笔记】16 - JSon和Ajax

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/json https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/ajax 目录 〇、官方文档 一、JSon 1.JSon介绍 2.JSon快速入门 3.JSON对象和字符串对象转换 1.应用案例 2.注意事项和细节 …

html table可编辑表格数据实现删除

这里教大家使用纯html和js脚本结合实现删除表格数据 <!DOCTYPE html> <html> <head><style>table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid black;padding: 8px;text-align: left;}</style> </head> <body…

人工智能_机器学习077_Kmeans聚类算法_亚洲国家队自动划分类别_3维可视化实现---人工智能工作笔记0117

然后我们上一节使用聚类算法对,2006年世界杯,2010年世界杯,2007年亚洲杯,足球队进行了自动类别划分,然后 这一节,我们使用代码对,聚类算法的划分结果,进行一下可视化 plt.figure(figsize=(12,9)) 首先指定画布大小 ax=plt.subplot(111,projection=3d) 然后指定111,表示画布的,…

Java之遍历树状菜单

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;专栏系列&#xff1a;无 &#x1f33c…

loTDB数据库学习笔记之初识 —— 筑梦之路

loTDB简介 IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎。具有体量轻、性能高、易使用的特点&#xff0c;适用于工业物联网应用中海量时间序列数据高速写入和复杂分析查询的需求&#xff0c;同时包含数据订阅、数据同步、负载均衡和运维监控功能。 由清华大学…

pytorch中池化函数详解

1 池化概述 1.1 什么是池化 池化层是卷积神经网络中常用的一个组件&#xff0c;池化层经常用在卷积层后边&#xff0c;通过池化来降低卷积层输出的特征向量&#xff0c;避免出现过拟合的情况。池化的基本思想就是对不同位置的特征进行聚合统计。池化层主要是模仿人的视觉系统…

文件夹共享(普通共享和高级共享的区别)防火墙设置(包括了jdk安装和Tomcat)

文章目录 一、共享文件1.1为什么需要配置文件夹共享功能&#xff1f;1.2配置文件共享功能1.3高级共享和普通共享的区别&#xff1a; 二、防火墙设置2.1先要在虚拟机上安装JDK和Tomcat供外部访问。2.2设置防火墙&#xff1a; 一、共享文件 1.1为什么需要配置文件夹共享功能&…

华为---USG6000V防火墙web基本配置示例

目录 1. 实验要求 2. 配置思路 3. 网络拓扑图 4. USG6000V防火墙端口和各终端相关配置 5. 在USG6000V防火墙web管理界面创建区域和添加相应端口 6. 给USG6000V防火墙端口配置IP地址 7. 配置通行策略 8. 测试验证 8.1 逐个删除策略&#xff0c;再看各区域终端通信情况 …

2024年深度学习、计算机视觉与大模型面试题综述,六大专题数百道题目

DeepLearning-Interview-Awesome-2024 本项目涵盖了大模型(LLMs)专题、计算机视觉与感知算法专题、深度学习基础与框架专题、自动驾驶、智慧医疗等行业垂域专题、手撕项目代码专题、优异开源资源推荐专题共计6大专题模块。我们将持续整理汇总最新的面试题并详细解析这些题目&a…

解决 MacOS JD-GUI 打开失败的问题

JD-GUI下载地址&#xff1a;http://java-decompiler.github.io JD-GUI 是一款轻量级的 Java 反编译工具&#xff0c;对于一些没有源码的 Jar 包&#xff0c;直接拖进去就可以反编译源码&#xff0c;十分的方便。 在 MacOS 还是 Mojave 的时候&#xff0c;JD-GUI 使用一切正常…

负载均衡——Ribbon

文章目录 Ribbon和Eureka配合使用项目引入RibbonRestTemplate添加LoadBalanced注解注意自定义均衡方式代码注册方式配置方式 Ribbon脱离Eureka使用 Ribbon&#xff0c;Nexflix发布的负载均衡器&#xff0c;有助于控制HTTP和TCP客户端的行为。基于某种负载均衡算法&#xff08;轮…

线性代数基础【3】向量

第一节 向量的概念与运算 一、基本概念 ①向量 ②向量的模(长度) ③向量的单位化 ④向量的三则运算 ⑤向量的内积 二、向量运算的性质 (一)向量三则运算的性质 α β β αα (β γ) (α β) γk (α β) kα kβ(k l) α kα lα (二)向量内积运…

TypeScript前端学习(四)

前言 还是分享的笔记&#xff0c;大佬请绕行&#xff01; 一、类的定义和继承 console.log("----对象---"); var people {"name": "张三",syaHi() {console.log("HI,my name is " this.name);} } people.syaHi();console.log("…

使用poi将pptx文件转为图片详解

目录 项目需求 后端接口实现 1、引入poi依赖 2、代码编写 1、controller 2、service层 测试出现的bug 小结 项目需求 前端需要上传pptx文件&#xff0c;后端保存为图片&#xff0c;并将图片地址保存数据库&#xff0c;最后大屏展示时显示之前上传的pptx的图片。需求看上…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第四周测验

课程4_第4周_测验题 目录 第一题 1.面部验证只需要将新图片与1个人的面部进行比较&#xff0c;而面部识别则需要将新图片与K个人的面部进行比较。 A. 【  】正确 B. 【  】错误 答案&#xff1a; A.【 √ 】正确 第二题 2.在人脸验证中函数d(img1,img2)起什么作用&a…

如何使用宝塔面板+Discuz+cpolar内网穿透工具搭建可远程访问论坛服务

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

少走十年弯路!!!webpack详解

webpack是什么&#xff1f;&#xff1f; 本质上&#xff0c;webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口点构建一个 依赖图(dependency graph)&#xff0c;然后将你项目中所需的每一个模…

LSTM的记忆能力实验

长短期记忆网络&#xff08;Long Short-Term Memory Network&#xff0c;LSTM&#xff09;是一种可以有效缓解长程依赖问题的循环神经网络&#xff0e;LSTM 的特点是引入了一个新的内部状态&#xff08;Internal State) 和门控机制&#xff08;Gating Mechanism&#xff09;&am…

禁止选择当天及以后的时间

这篇文章编辑与2023.12.26&#xff0c;所以可以选择的时间为包含2023.12.25以及之前的时间 实现思路&#xff1a;1、获取当天时间的年月日&#xff0c;然后默认时分秒为23&#xff1a;59&#xff1a;59&#xff1b; 2、获取到时间转为时间戳减去 一天&#xff08;1*24*3600*10…