爬取酷狗音乐python代码
时间: 2023-05-19 14:02:18 浏览: 372
以下是一个简单的爬取酷狗音乐的 Python 代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'http://www.kugou.com/yy/html/search.html#searchType=song&searchKeyWord='
keyword = '周杰伦'
response = requests.get(url + keyword)
soup = BeautifulSoup(response.text, 'html.parser')
songs = soup.select('.song_name > a')
for song in songs:
print(song.text)
```
这个代码可以根据关键字爬取酷狗音乐中的歌曲名称。
相关问题
爬取酷狗音乐歌单python代码
### 使用 Python 编写爬虫程序以抓取酷狗音乐平台上的歌单数据
为了实现这一目标,可以采用 `requests` 和 `BeautifulSoup` 库来获取网页内容并解析 HTML 文档。以下是具体实现方法:
#### 导入所需库
```python
import requests
from bs4 import BeautifulSoup
```
#### 获取页面源码
定义函数用于发送 HTTP 请求,并返回响应对象的内容。
```python
def get_html(url):
try:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
r = requests.get(url, timeout=30, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except Exception as e:
print(f"Error occurred while fetching the page: {str(e)}")
return ""
```
#### 解析HTML文档
通过分析目标网站结构找到歌单列表所在的标签及其属性,进而提取出每首歌曲的信息。
```python
def parse_playlist(html):
soup = BeautifulSoup(html, 'html.parser')
playlist_items = []
for item in soup.select('.pc_temp_songlist .pc_temp_item'):
song_info = {}
# 提取歌曲名称
song_name_tag = item.find('span', class_='txt')
if song_name_tag is not None:
song_info['name'] = song_name_tag.a.string.strip()
# 提取歌手名
artist_tag = item.find('span', class_='singer')
if artist_tag is not None and artist_tag.span is not None:
song_info['artist'] = artist_tag.span.attrs.get('title')
# 添加到列表中
if all(key in song_info for key in ('name', 'artist')):
playlist_items.append(song_info)
return playlist_items
```
#### 主逻辑控制流程
指定要访问的目标URL以及输出路径等参数;调用上述两个辅助函数完成整个过程。
```python
if __name__ == "__main__":
url = "https://www.kugou.com/yy/html/rank.html" # 此处仅为示例链接,请替换为实际想要抓取的榜单页网址
html_content = get_html(url)[^1]
songs_list = parse_playlist(html_content)[^2]
for idx, song in enumerate(songs_list[:10], start=1): # 只打印前10条记录作为测试
print(f"{idx}. Song Name: {song['name']} | Artist: {song['artist']}")
```
此段代码展示了如何利用Python编写一个简单的网络爬虫脚本来收集来自酷狗音乐官网特定排行榜中的部分曲目详情[^3]。
爬取酷狗音乐的python代码并下载
### 使用 Python 编写爬虫从酷狗音乐下载歌曲
要完成这一目标,可以采用 Selenium 和 BeautifulSoup 来获取网页中的数据,并通过 requests 库来处理文件下载。以下是详细的说明:
#### 依赖库安装
为了运行此脚本,需先安装必要的 Python 库:
- `selenium`:用于模拟浏览器行为。
- `beautifulsoup4`:解析 HTML 数据。
- `requests`:发送 HTTP 请求。
可以通过以下命令安装这些库[^1]:
```bash
pip install selenium beautifulsoup4 requests
```
#### 实现代码示例
下面是一个完整的代码示例,展示如何使用 Python 抓取酷狗音乐的歌曲信息并实现下载功能。
```python
from bs4 import BeautifulSoup
import os
import time
from selenium import webdriver
import requests
def download_song(url, save_path):
""" 下载指定 URL 的音频文件 """
response = requests.get(url)
if response.status_code == 200:
with open(save_path, 'wb') as f:
f.write(response.content)
def scrape_kugou_music():
# 初始化 WebDriver (假设已配置好 ChromeDriver 路径)
driver = webdriver.Chrome()
try:
url = "https://www.kugou.com"
driver.get(url)
# 假设我们搜索关键词 “周杰伦”
search_box = driver.find_element_by_id('searchKey')
search_button = driver.find_element_by_class_name('header_search_btn')
search_box.send_keys("周杰伦")
search_button.click()
# 等待页面加载完毕
time.sleep(3)
soup = BeautifulSoup(driver.page_source, 'html.parser')
song_list = []
# 解析页面上的歌曲列表
songs = soup.select('.pc_temp_songname a.pc_musics_play')
for song in songs:
href = song['href']
title = song.text.strip()
song_info = {'title': title, 'url': href}
song_list.append(song_info)
# 遍历歌曲链接并尝试下载
for idx, song in enumerate(song_list[:5]): # 只下载前五首歌作为演示
print(f"正在下载第 {idx + 1} 首歌: {song['title']}")
# 构造保存路径
file_name = f"{os.getcwd()}/{song['title']}.mp3".replace("/", "_").replace("\\", "_")
# 发起请求以实际下载 MP3 文件
download_song(song['url'], file_name)
print(f"成功下载到位置: {file_name}")
finally:
driver.quit()
if __name__ == "__main__":
scrape_kugou_music()
```
上述代码实现了以下几个主要部分的功能:
1. **初始化 WebDriver** 并打开酷狗音乐首页。
2. 输入关键字进行搜索操作。
3. 利用 Beautiful Soup 提取消息内容,提取每首歌的相关链接和名称。
4. 对于每一首歌调用函数 `download_song()` 完成下载过程。
需要注意的是,在真实环境中可能还需要解决一些额外的技术挑战,比如动态加载的内容、反爬机制等。
#### 注意事项
由于某些网站具有严格的访问控制策略或者版权保护措施,因此在实施此类项目之前应仔细阅读其服务条款以及法律法规的要求。
阅读全文
相关推荐













