关键词

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

详解Python Selenium爬取网易云音乐歌单名

本攻略将从以下几个方面详细介绍如何使用Python和Selenium模拟登录网易云音乐,并爬取网易云音乐歌单名。

准备工作

在开始之前,需要进行如下准备工作:

  1. 安装Python3
  2. 安装Selenium库
  3. 安装Chrome浏览器
  4. 下载Chrome浏览器对应的驱动程序(注意驱动版本与Chrome浏览器版本要匹配)

操作步骤

1. 导入相关库

首先,需要导入Selenium库中的WebDriver和Keys两个类。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

2. 打开Chrome浏览器并登录网易云音乐

driver = webdriver.Chrome('/path/to/chromedriver') # 指定Chrome驱动程序路径
driver.get("http://music.163.com/")
driver.switch_to.frame("contentFrame") # 进入iframe才能找到元素
login_btn = driver.find_element_by_css_selector("a[data-action='login']")
login_btn.click()
phone_login_btn = driver.find_element_by_css_selector("a[data-type='1']")
phone_login_btn.click()
phone_input = driver.find_element_by_css_selector("input[name='username']")
phone_input.send_keys("手机号")
password_input = driver.find_element_by_css_selector("input[name='password']")
password_input.send_keys("密码")
password_input.send_keys(Keys.RETURN)

3. 获取歌单名

playlist_name_list = []
for i in range(1, 10):  # 假设要获取前10个歌单名
    driver.get(f"http://music.163.com/user/home?id={用户ID}&page={i}&sortType=5") # 假设用户ID为123456
    driver.switch_to.frame("contentFrame")
    playlists = driver.find_elements_by_css_selector("a.msk") # 获取歌单链接
    for playlist in playlists: 
        playlist_name = playlist.get_attribute("title") # 获取歌单标题
        playlist_name_list.append(playlist_name)
print(playlist_name_list)

示例说明

假设你想获取网易云音乐用户"最爱"的前十个歌单名,可以按照以下步骤操作:

  1. 在Chrome浏览器中登录网易云音乐账号。
  2. 打开网易云音乐用户"最爱"的主页(ID为252604054)
  3. 在浏览器地址栏中输入"http://music.163.com/user/home?id=252604054&page=1&sortType=5",回车进入该用户的歌单页。(这里获取第一页的歌单,sortType=5表示按创建时间排序;如需获取其他页的歌单可更改page的值)
  4. 复制上述第2步和第3步操作,并将page的值依次增加到10,获取相应页的歌单
  5. 打开Python编辑器,将上述Python代码拷贝到编辑器中。
  6. 注意修改代码中的用户ID、驱动程序路径、手机号和密码(如需通过邮箱登录可将代码中的手机号输入框改为邮箱输入框)。
  7. 执行代码,等待爬取完成后输出前十个歌单名。

另外,本攻略中的代码仅供学习和研究使用,请勿用于任何非法或商业用途。

本文链接:http://task.lmcjl.com/news/17503.html

展开阅读全文