Python: 爬取网易云音乐
2025-02-17
环境准备
安装 selenium
# pip 安装
pip install selenium
# conda 安装
conda install selenium下载 WebDriver
Selenium 需要对应浏览器的 WebDriver 才能工作:
# WebDriver 下载地址
Chrome: https://sites.google.com/chromium.org/driver/
Firefox: https://github.com/mozilla/geckodriver/releases
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/配置环境
WebDriver 配置有两种方式:
1. 全局配置
- 将 WebDriver 放在 Python 安装目录
- 所有项目都可以使用
- 推荐使用这种方式
2. 本地配置
- 将 WebDriver 放在项目目录
- 只对当前项目有效
- 不推荐,维护成本高
使用示例
基本测试
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 配置 ChromeDriver
service = Service('path/to/chromedriver')
driver = webdriver.Chrome(service=service)
# 访问网页
driver.get('https://music.163.com/')
print(f"页面标题: {driver.title}")
# 关闭浏览器
driver.quit()爬取音乐
不保证时效性
def crawl_music():
"""爬取网易云音乐"""
driver = webdriver.Chrome(service=service)
try:
# 访问歌单页面
driver.get('https://music.163.com/#/playlist?id=xxxx')
# 切换到内容 iframe
driver.switch_to.frame("g_iframe")
# 获取歌曲列表
songs = driver.find_elements(By.CSS_SELECTOR, '.ttc')
# 提取歌曲信息
for song in songs:
title = song.find_element(By.TAG_NAME, 'b').get_attribute('title')
print(f"歌曲: {title}")
finally:
driver.quit()最佳实践
配置建议
- 使用全局 WebDriver
- 及时更新版本
- 做好异常处理
爬取建议
- 添加延时等待
- 模拟真实用户行为
- 遵守网站规则
注意:
- 确保 WebDriver 版本匹配
- 处理网页加载延迟
- 注意反爬虫机制