利用Requests和BeautifulSoup第三方库,爬取咪咕音乐“榜单”https://music.migu.cn/v3/music/top/jianjiao_newsong的信息,需要爬取的音乐信息有排名、歌手、歌曲名称和歌曲时长并输出。全代码
时间: 2024-09-29 21:07:38 浏览: 80
python爬虫练习:爬图片
为了利用Python的`requests`和`beautifulsoup4`库从咪咕音乐网站爬取指定页面的数据,首先需要安装这两个库,如果尚未安装可以使用pip来安装:
```bash
pip install requests beautifulsoup4
```
然后,你可以编写如下的Python代码来实现这个需求:
```python
import requests
from bs4 import BeautifulSoup
# 请求网页内容
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)
# 检查请求是否成功
if response.status_code == 200:
# 使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(response.text, 'lxml')
# 找到包含音乐信息的部分,这里假设数据结构类似表格,找到每一行(tr)
table_rows = soup.find_all('tr')
for row in table_rows:
# 确保每一项都有四个列(td),然后提取数据
if len(row.find_all('td')) == 4:
rank = row.find('td', class_='rank').text.strip() # 排名
singer = row.find('td', class_='singer').text.strip() # 歌手
song_name = row.find('a', class_='title').text.strip() # 歌曲名称
duration = row.find('span', class_='time').text.strip() # 歌曲时长
print(f"排名:{rank}\n歌手:{singer}\n歌曲名称:{song_name}\n歌曲时长:{duration}\n")
else:
print("请求失败,状态码:", response.status_code)
```
请注意,实际的网页结构可能会有所不同,上述代码是基于对HTML结构的一个简单假设。如果实际的DOM结构有所变化,可能需要调整CSS选择器来定位正确的元素。此外,一些网站可能会使用JavaScript动态加载内容,这种情况下,普通的HTTP请求可能无法获取完整数据,可能需要使用Selenium等工具。
阅读全文