写一段爬取网易云音乐的全部代码
时间: 2023-12-01 09:31:17 浏览: 168
好的,下面是一个爬取网易云音乐歌单的完整代码示例,包括使用Selenium来获取动态生成的网页内容,以及下载音乐文件并保存到本地:
```python
import os
import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 设置Chrome浏览器的选项,禁止图片和JavaScript加载,加快页面加载速度
chrome_options = Options()
prefs = {"profile.managed_default_content_settings.images": 2, "javascript.enabled": False}
chrome_options.add_experimental_option("prefs", prefs)
# 创建Chrome浏览器实例
driver = webdriver.Chrome(chrome_options=chrome_options)
# 要爬取的歌单的链接
url = 'https://music.163.com/#/playlist?id=xxxxxx'
# 打开链接
driver.get(url)
# 等待页面加载完成
time.sleep(2)
# 切换到iframe中
driver.switch_to.frame('g_iframe')
# 查找所有歌曲的名称和链接
songs = driver.find_elements_by_css_selector('ul.f-hide li a')
# 遍历所有歌曲
for song in songs:
# 获取歌曲的名称和链接
song_name = song.text
song_link = song.get_attribute('href')
# 请求歌曲页面
response = requests.get(song_link)
# 使用BeautifulSoup解析网页
soup = BeautifulSoup(response.text, 'html.parser')
# 找到歌曲的下载链接
download_link = soup.find('a', {'class': 'u-btni u-btni-dw f-fl'}).get('href')
# 下载歌曲文件并保存到本地
file_name = song_name + '.mp3'
file_path = os.path.join(os.getcwd(), file_name)
with open(file_path, 'wb') as f:
f.write(requests.get(download_link).content)
# 关闭浏览器
driver.quit()
```
注意,这段代码中的`url`和`songs`选择器需要根据实际情况进行修改。此外,爬取音乐文件需要注意版权等法律问题,建议仅用于学习和个人用途。
阅读全文