利用Requests和BeautifulSoup第三方库,爬取咪咕音乐“榜单”https://music.migu.cn/v3/music/top/jianjiao_newsong的信息,需要爬取的音乐信息有排名、歌手、歌曲名称和歌曲时长。
时间: 2024-09-29 13:01:29 浏览: 29
利用Python的`requests`库可以发送HTTP请求获取网页内容,而`BeautifulSoup`则用于解析HTML文档,提取所需数据。首先,你需要安装这两个库,如果还没有安装可以使用以下命令:
```bash
pip install requests beautifulsoup4
```
接下来,按照以下步骤操作:
1. 导入必要的库:
```python
import requests
from bs4 import BeautifulSoup
```
2. 发送GET请求到指定URL:
```python
url = "https://music.migu.cn/v3/music/top/jianjiao_newsong"
headers = {'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'}
response = requests.get(url, headers=headers)
```
3. 检查请求是否成功,然后解析HTML内容:
```python
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'lxml')
else:
print(f"请求失败,状态码:{response.status_code}")
```
4. 使用BeautifulSoup查找并提取你需要的数据(例如,CSS选择器可能会帮助找到对应的元素):
- 排名:通常在列表或表格中,可能通过索引找到每行的顺序
- 歌手:查找歌手名字的标签,如`<span>`或`<a>`
- 歌曲名称:同样查找包含歌名的标签
- 歌曲时长:可能是时间格式,如`<time>2分30秒</time>`,需要解析提取数字
5. 将数据存储在一个列表或字典中,每个项目对应一个音乐信息:
```python
songs_data = []
for rank, song_row in enumerate(soup.find_all('div', class_='list-item'), start=1):
singer = song_row.find('span', class_='artist').text
title = song_row.find('a', class_='title').text
duration = song_row.find('time').text.split(':')[-1]
# 根据实际页面结构处理可能存在的HTML标签,如删除空格、转换时长单位等
songs_data.append({
'排名': rank,
'歌手': singer.strip(),
'歌曲名称': title.strip(),
'歌曲时长': duration[:-3] if duration.endswith('秒') else duration # 假设时长单位是秒
})
```
注意,实际的HTML结构可能因网站更新而变化,因此在编写代码时需要查看并适应网页的实际结构。完成上述步骤后,你可以打印或保存`songs_data`来获取所需的音乐信息。