Python爬取QQ音乐的代码
时间: 2023-09-17 20:06:19 浏览: 155
### 回答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
import requests
from bs4 import BeautifulSoup
def crawl_qq_music(url):
# 发送GET请求获取页面内容
response = requests.get(url)
# 解析页面内容
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有的歌曲标签
song_tags = soup.find_all('li', class_='playlist__item')
# 遍历歌曲标签,提取歌曲信息
for song_tag in song_tags:
# 获取歌曲名称
song_name = song_tag.find('div', class_='playlist__item_name').text
# 获取歌手名字
artist_name = song_tag.find('div', class_='playlist__item_singer').text
# 获取歌曲时长
song_duration = song_tag.find('div', class_='playlist__item_time').text
# 打印歌曲信息
print(f'歌曲名称:{song_name.strip()}')
print(f'歌手名字:{artist_name.strip()}')
print(f'歌曲时长:{song_duration.strip()}')
# 示例网页URL
url = 'https://y.qq.com/n/ryqq/playlist/1234567890.html'
# 调用爬取函数
crawl_qq_music(url)
```
以上代码使用了`requests`库来发送HTTP请求并获取QQ音乐页面的内容,使用`BeautifulSoup`库来解析页面内容。通过分析页面结构,我们可以找到其中的歌曲信息,并逐个提取出来打印出来。你可以将示例代码中的URL替换为你想要爬取的歌单页面的URL,然后运行代码即可爬取歌曲信息。请注意,爬取网页内容有可能违反网站的使用规则,请在合法合规的前提下使用该代码。
### 回答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'
params = {
'ct': '24',
'qqmusic_ver': '1298',
'new_json': '1',
'remoteplace': 'sizer.yqq.song_next',
'searchid': '64405487069162962',
't': '0',
'aggr': '1',
'cr': '1',
'catZhida': '1',
'lossless': '0',
'flag_qc': '0',
'p': '1',
'n': '20',
'w': keyword,
'g_tk': '5381',
'jsonpCallback': 'jp1',
'loginUin': '0',
'hostUin': '0',
'format': 'jsonp',
'inCharset': 'utf8',
'outCharset': 'utf-8',
'notice': '0',
'platform': 'yqq.json',
'needNewCode': '0'
}
# 发送请求并获取响应
response = requests.get(url, params=params)
data = response.json()
# 解析响应的歌曲信息
song_list = data['data']['song']['list']
for song in song_list:
song_name = song['name']
singer_name = song['singer'][0]['name']
print(song_name, singer_name)
# 测试代码
get_songs('青花瓷')
```
以上代码使用requests库发送搜索请求,并使用BeautifulSoup库解析响应数据。代码中的get_songs函数接收一个关键字作为参数,然后根据关键字在QQ音乐进行搜索,并打印搜索结果中的歌曲名称和歌手名称。这只是一个简单的示例,可以根据具体需求进行更复杂的操作和定制化。
阅读全文