爬取网易云音乐歌单的代码
时间: 2024-08-13 11:07:50 浏览: 118
可以使用Python的Selenium库和BeautifulSoup库来爬取网易云音乐歌单。以下是一个示例代码:
```python
from selenium import webdriver
from bs4 import BeautifulSoup
# 设置Chrome浏览器的驱动路径
driver_path = 'chromedriver.exe'
driver = webdriver.Chrome(driver_path)
# 打开网易云音乐歌单页面
url = 'https://music.163.com/playlist?id=90771773'
driver.get(url)
# 切换到iframe框架
driver.switch_to.frame('contentFrame')
# 获取歌单页面的HTML内容
html = driver.page_source
# 解析HTML内容,获取歌曲名称列表
soup = BeautifulSoup(html, 'lxml')
song_list = soup.find_all('span', {'class': 'txt'})
# 输出歌曲名称列表
for song in song_list:
print(song.text)
# 关闭浏览器
driver.quit()
```
该代码使用Chrome浏览器驱动打开网易云音乐歌单页面,然后切换到iframe框架,获取歌单页面的HTML内容,并使用BeautifulSoup库解析HTML内容,获取歌曲名称列表。最后输出歌曲名称列表。
相关问题
用selenium爬取网易云音乐歌单并且保存为csv文件
首先,你需要安装 Selenium 库,并且需要一个可以运行的浏览器驱动。下面是一个示例代码,它会爬取网易云音乐歌单的歌曲名称和歌手名称,并将这些信息保存到 CSV 文件中:
```python
# 导入必要的库
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
# 定义保存到 CSV 文件中的信息的列表
songs = []
# 使用 webdriver 启动浏览器
driver = webdriver.Firefox()
# 使用浏览器访问网易云音乐歌单的 URL
driver.get("https://music.163.com/#/playlist?id=你的歌单 ID")
# 等待页面加载完成
driver.implicitly_wait(10)
# 获取歌曲列表的 div 元素
song_list_div = driver.find_element(By.ID, "song-list-pre-cache")
# 获取所有的 li 元素
li_elements = song_list_div.find_elements(By.TAG_NAME, "li")
# 遍历所有的 li 元素
for li in li_elements:
# 获取歌曲名称和歌手名称
song_name = li.find_element(By.CLASS_NAME, "f-thide").text
artist_name = li.find_element(By.CLASS_NAME, "s-fc3").text
# 将歌曲信息添加到列表中
songs.append((song_name, artist_name))
# 关闭浏览器
driver.close()
# 将歌曲信息写入 CSV 文件中
with open("songs.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerows(songs)
```
在这段代码中,我们使用了 Selenium 的 webdriver 模块启动了 Firefox 浏
写一个爬取网易云音乐歌单信息包含了歌单的ID、名字、播放次数、创建时间、创建歌单的用户、歌单的类型、更新时间、收藏数量、歌曲数量、歌单的描述、歌单的评论数量、分享数量的代码
好的,以下是爬取网易云音乐歌单信息的 Python 代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://music.163.com/discover/playlist'
headers = {
'Referer': 'https://music.163.com/',
'Host': 'music.163.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 获取歌单页面HTML
def get_page(url):
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
return soup
# 爬取歌单信息
def get_playlists(soup):
playlists = []
for li in soup.find('ul', {'class': 'm-cvrlst f-cb'}).find_all('li'):
playlist = {}
playlist['id'] = li.find('a')['href'].split('=')[1]
playlist['name'] = li.find('a')['title']
playlist['play_count'] = li.find('span', {'class': 'nb'}).text
playlist['create_time'] = li.find('span', {'class': 's-fc3'}).text
playlist['create_user'] = li.find('a', {'class': 'nm nm-icn f-thide s-fc3'})['title']
playlist['type'] = li.find('span', {'class': 's-fc4'}).text
playlist['update_time'] = li.find('span', {'class': 's-fc4'}).text
playlist['collect_count'] = li.find('span', {'class': 'u-btni u-btni-fav '}).text
playlist['song_count'] = li.find('span', {'class': 's-fc3'}).text
playlist['description'] = li.find('div', {'class': 'u-cover u-cover-1'}).text
playlist['comment_count'] = li.find('span', {'class': 'u-btni u-btni-cmmt '}).text
playlist['share_count'] = li.find('span', {'class': 'u-btni u-btni-share '}).text
playlists.append(playlist)
return playlists
# 打印歌单信息
def print_playlists(playlists):
for playlist in playlists:
print('歌单ID:', playlist['id'])
print('歌单名字:', playlist['name'])
print('播放次数:', playlist['play_count'])
print('创建时间:', playlist['create_time'])
print('创建歌单的用户:', playlist['create_user'])
print('歌单类型:', playlist['type'])
print('更新时间:', playlist['update_time'])
print('收藏数量:', playlist['collect_count'])
print('歌曲数量:', playlist['song_count'])
print('歌单描述:', playlist['description'])
print('歌单评论数量:', playlist['comment_count'])
print('歌单分享数量:', playlist['share_count'])
print('----------------------------------')
# 程序入口
if __name__ == '__main__':
soup = get_page(url)
playlists = get_playlists(soup)
print_playlists(playlists)
```
该程序爬取网易云音乐的歌单页面,获取每个歌单的ID、名字、播放次数、创建时间、创建歌单的用户、歌单的类型、更新时间、收藏数量、歌曲数量、歌单的描述、歌单的评论数量、分享数量,并打印输出到控制台。注意,由于网易云音乐有反爬虫机制,程序中使用了一些请求头和BeautifulSoup库来模拟浏览器请求。
阅读全文