Python爬取QQ音乐的代码
时间: 2023-08-31 15:44:14 浏览: 78
### 回答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音乐的代码,需要使用到Python的第三方库requests和pyquery。
首先,安装requests和pyquery库。可以使用pip命令来安装:
```
pip install requests
pip install pyquery
```
接下来,编写Python代码:
```python
import requests
from pyquery import PyQuery as pq
def get_song_list(keyword):
url = f'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&p=1&n=10&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/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
response_json = response.json()
song_list = []
for song in response_json['data']['song']['list']:
song_name = song['name']
singer = song['singer'][0]['name']
album_name = song['album']['name']
song_list.append({'name': song_name, 'singer': singer, 'album': album_name})
return song_list
if __name__ == '__main__':
keyword = input('请输入要搜索的歌曲关键字:')
songs = get_song_list(keyword)
for song in songs:
print(f"歌曲名:{song['name']}\t歌手:{song['singer']}\t专辑:{song['album']}")
```
以上代码实现了根据关键字搜索QQ音乐,并返回歌曲名、歌手和专辑信息。运行时,会提示用户输入要搜索的歌曲关键字,并打印搜索结果。
### 回答3:
下面是一个用Python爬取QQ音乐的代码示例:
```python
import requests
from bs4 import BeautifulSoup
def get_songs(keyword):
url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp'
headers = {
'referer': 'https://y.qq.com/portal/search.html',
'origin': 'https://y.qq.com',
}
params = {
'p': '1',
'n': '10',
'w': keyword,
'format': 'json'
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
song_list = []
for song_data in data['data']['song']['list']:
song_name = song_data['songname']
singer = song_data['singer'][0]['name']
album = song_data['albumname']
song = {
'name': song_name,
'singer': singer,
'album': album
}
song_list.append(song)
return song_list
keyword = '周杰伦'
songs = get_songs(keyword)
for song in songs:
print("歌名:", song['name'])
print("歌手:", song['singer'])
print("专辑:", song['album'])
print('-' * 20)
```
这个代码使用了requests库来发送HTTP请求,使用了BeautifulSoup库来解析HTML。首先构建请求头和参数,然后发起GET请求获取QQ音乐搜索结果的JSON数据。然后从数据中提取出歌曲名、歌手和专辑,并将其存储在一个列表中。最后遍历列表,打印出每首歌曲的详细信息。
阅读全文