用python代码写一个爬取网易云音乐的代码
时间: 2023-09-09 15:04:30 浏览: 149
### 回答1:
好的,这是一个爬取网易云音乐歌曲信息的示例代码:
```python
import requests
from bs4 import BeautifulSoup
# 获取网页源代码
def get_html(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
r = requests.get(url, headers=headers)
r.encoding = 'utf-8'
return r.text
# 解析网页源代码,获取歌曲信息
def parse_html(html):
soup = BeautifulSoup(html, 'lxml')
song_list = soup.find('ul', {'class': 'f-hide'}).find_all('li')
for li in song_list:
song_id = li.find('a')['href'].replace('/song?id=', '')
song_name = li.find('a').text
print(f'歌曲ID:{song_id},歌曲名称:{song_name}')
# 主函数
def main():
url = 'https://music.163.com/playlist?id=3778678'
html = get_html(url)
parse_html(html)
if __name__ == '__main__':
main()
```
这段代码爬取的是网易云音乐上一个歌单的歌曲信息(歌单ID为3778678),输出的是歌曲ID和歌曲名称。
需要注意的是,网易云音乐的网页是使用Ajax加载的,所以如果要爬取的是某个歌手的歌曲信息,就需要使用模拟Ajax请求的方法来获取数据。
希望这些信息能帮到你。
### 回答2:
下面是一个使用Python编写的简单网易云音乐爬虫代码:
```
import requests
from bs4 import BeautifulSoup
def get_song_list(url):
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'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
song_list = []
songs = soup.find_all('div', class_='u-cover u-cover-1')
for song in songs:
song_name = song.find('a', class_='tit').text.strip()
artist = song.find('a', class_='nm').text.strip()
song_list.append({"name": song_name, "artist": artist})
return song_list
if __name__ == '__main__':
url = 'https://music.163.com/discover/toplist?id=3778678'
song_list = get_song_list(url)
for song in song_list:
print('歌曲名:', song['name'])
print('歌手:', song['artist'])
print('---------')
```
这个代码使用了第三方库BeautifulSoup来解析HTML,通过发送GET请求获取网页内容,并使用CSS选择器来提取想要的信息。在这个例子中,我们爬取了网易云音乐的热歌榜,获取了歌曲名和歌手,并打印了结果。你可以根据自己的需求修改代码中的URL和提取的信息。注意,为了避免被反爬虫策略封禁,我们添加了一个伪装的User-Agent头部信息。
### 回答3:
下面是一个使用Python编写的简单的爬取网易云音乐的代码示例:
```python
import requests
from bs4 import BeautifulSoup
def get_song_list(keyword):
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' #设置User-Agent以模拟浏览器请求
}
url = 'https://music.163.com/'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
search_form = soup.find('form', attrs={'class': 'm-search'})
action_url = 'https://music.163.com' + search_form['action'] #获取搜索表单提交的URL
data = {
's': keyword, # 搜索关键词
'type': 1 # 类型,1表示搜索歌曲
}
response = requests.post(action_url, headers=headers, data=data)
soup = BeautifulSoup(response.text, 'html.parser')
song_list = []
song_items = soup.find_all('div', attrs={'class': 'srchsongst'})
for song_item in song_items:
song_name = song_item.find('b').string
artist = song_item.find('span', attrs={'class': 's-fc8'}).string
album = song_item.find('span', attrs={'class': 's-fc3'}).string
song_list.append((song_name, artist, album))
return song_list
keyword = '周杰伦'
result = get_song_list(keyword)
for song in result:
print(f'歌曲名称:{song[0]},艺术家:{song[1]},专辑:{song[2]}')
```
运行代码后,它将输出与关键字“周杰伦”相关的歌曲的名称、艺术家和专辑信息。你可以根据你的需求进行进一步的处理和解析。注意,此代码只是一个示例,网站的结构可能会发生变化,因此你可能需要根据实际情况进行调整。
阅读全文