详解Python Selenium爬取网易云音乐歌单名
本攻略将从以下几个方面详细介绍如何使用Python和Selenium模拟登录网易云音乐,并爬取网易云音乐歌单名。
准备工作
在开始之前,需要进行如下准备工作:
- 安装Python3
- 安装Selenium库
- 安装Chrome浏览器
- 下载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)
示例说明
假设你想获取网易云音乐用户"最爱"的前十个歌单名,可以按照以下步骤操作:
- 在Chrome浏览器中登录网易云音乐账号。
- 打开网易云音乐用户"最爱"的主页(ID为252604054)
- 在浏览器地址栏中输入"http://music.163.com/user/home?id=252604054&page=1&sortType=5",回车进入该用户的歌单页。(这里获取第一页的歌单,sortType=5表示按创建时间排序;如需获取其他页的歌单可更改page的值)
- 复制上述第2步和第3步操作,并将page的值依次增加到10,获取相应页的歌单
- 打开Python编辑器,将上述Python代码拷贝到编辑器中。
- 注意修改代码中的用户ID、驱动程序路径、手机号和密码(如需通过邮箱登录可将代码中的手机号输入框改为邮箱输入框)。
- 执行代码,等待爬取完成后输出前十个歌单名。
另外,本攻略中的代码仅供学习和研究使用,请勿用于任何非法或商业用途。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解python selenium 爬取网易云音乐歌单名 - Python技术站