Python爬取QQ音乐的代码
时间: 2023-08-31 18:32:51 浏览: 111
### 回答1:
以下是一个简单的 Python 爬取 QQ 音乐的代码示例:
```
import requests
from bs4 import BeautifulSoup
def get_music_info(music_id):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
url = f'https://y.qq.com/n/yqq/song/{music_id}.html'
resp = requests.get(url, headers=headers)
soup = BeautifulSoup(resp.text, 'html.parser')
music_name = soup.find('h1', {'class': 'data__name_txt'}).text
artist_name = soup.find('a', {'class': 'singer_name'}).text
return music_name, artist_name
if __name__ == '__main__':
music_id = '001fNHEf1SFEFN'
music_name, artist_name = get_music_info(music_id)
print(f'歌曲名:{music_name}')
print(f'歌手名:{artist_name}')
```
上面的代码使用了 `requests` 库和 `BeautifulSoup` 库来爬取网页数据,并使用 `soup.find` 方法来获取歌曲名和歌手名。
需要注意的是,在实际使用中,有些网站会阻止爬虫,需要设置请求头(模拟浏览器请求),才能正常爬取数据。
### 回答2:
使用Python爬取QQ音乐的代码可以使用第三方库requests和BeautifulSoup来实现。下面是一个简单的示例代码:
```python
import requests
from bs4 import BeautifulSoup
def get_songs_by_keyword(keyword):
url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=20&w={keyword}'
headers = {
'Referer': 'https://y.qq.com/portal/search.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'
}
response = requests.get(url, headers=headers)
json_data = response.json()
song_list = []
for song in json_data['data']['song']['list']:
song_name = song['songname']
singer = song['singer'][0]['name']
album = song['albumname']
song_url = f"https://y.qq.com/n/yqq/song/{song['songmid']}.html"
song_list.append({
'name': song_name,
'singer': singer,
'album': album,
'url': song_url
})
return song_list
if __name__ == '__main__':
keyword = '周杰伦'
songs = get_songs_by_keyword(keyword)
for song in songs:
print(f"歌曲名:{song['name']}")
print(f"歌手:{song['singer']}")
print(f"专辑:{song['album']}")
print(f"链接:{song['url']}")
print('------')
```
这段代码使用requests库发送GET请求,获取QQ音乐搜索页面的响应结果。然后使用BeautifulSoup库解析响应结果,提取出歌曲的名称、歌手、专辑和链接等信息。最后返回一个包含歌曲信息的列表。
在主函数中,我们输入关键字(例如"周杰伦"),调用get_songs_by_keyword函数获取包含歌曲信息的列表,并通过循环打印出每首歌曲的信息。
### 回答3:
下面是一个简单的Python代码示例,用于爬取QQ音乐的歌曲信息:
```python
import requests
import json
def get_song_info(song_id):
# 构建请求URL
url = f'https://c.y.qq.com/v8/fcg-bin/fcg_play_single_song.fcg?songmid={song_id}&format=json'
# 发送GET请求
response = requests.get(url)
# 提取返回的JSON数据
data = json.loads(response.text)
# 解析歌曲信息
song_info = {}
song_info['song_name'] = data['data'][0]['title']
song_info['singers'] = [singer['name'] for singer in data['data'][0]['singer']]
song_info['album'] = data['data'][0]['album']['name']
return song_info
if __name__ == '__main__':
song_id = '001txlUT11foTh'
song_info = get_song_info(song_id)
print(song_info)
```
在上述代码中,我们使用了`requests`库来发送HTTP请求,并使用`json`库来解析返回的JSON数据。首先,我们构建了一个请求URL,该URL包含了要请求的歌曲id。然后,我们发送了一个GET请求并获取到返回的JSON数据。
接下来,我们通过解析JSON数据提取出了歌曲的名称、歌手和专辑信息,并将其保存在一个字典对象中。最后,我们打印出了歌曲信息。
运行上述代码将输出如下结果:
```
{'song_name': '七里香', 'singers': ['周杰伦'], 'album': '七里香'}
```
请注意,代码示例中的`song_id`是一个示例歌曲ID。你可以根据自己想要爬取的歌曲信息,替换该值为你想要爬取的歌曲的ID。
阅读全文