Python爬取酷狗top500歌曲榜单并可视化(至少八个可视化图片),请给出相关代码(不使用seaborn 库)
时间: 2024-06-10 07:07:35 浏览: 20
非常感谢您的提问!以下是Python爬取酷狗top500歌曲榜单并可视化的代码示例(不使用seaborn库):
```python
import requests
import json
import matplotlib.pyplot as plt
# 获取歌曲榜单数据
url = 'http://www.kugou.com/yy/rank/home/1-8888.html?from=rank'
headers = {
'Host': 'www.kugou.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Referer': 'http://www.kugou.com/yy/rank/home/1-8888.html?from=rank'
}
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
data = json.loads(response.text)['data']['info']
# 数据可视化
# 每个榜单展示前8首歌曲,每首歌曲的名字、歌手、排名、上升/下降名次、播放次数
num = 0
for d in data:
num += 1
if num > 5:
break # 仅展示前5个榜单
print(f"----------------封面:{d['imgurl']} 榜单:{d['rankname']} 更新时间:{d['ranktime']}----------------")
top_list = d['songinfo']
song_names = []
song_singers = []
song_ranks = []
song_updowns = []
song_plays = []
for i in range(8):
song_names.append(top_list[i]['filename'])
song_singers.append(top_list[i]['hash_author_name'])
song_ranks.append(int(top_list[i]['rank']))
song_updowns.append(int(top_list[i]['rank_gap']))
song_plays.append(int(top_list[i]['play_count']))
fig, axs = plt.subplots(2, 4, figsize=(20, 10))
for i in range(2):
for j in range(4):
k = i * 4 + j
if k < 8:
axs[i, j].barh([song_names[k].split('-')[0]], [song_plays[k]], align='center', color='b')
axs[i, j].set_title(f"Rank:{song_ranks[k]} Up/Down:{song_updowns[k]}")
axs[i, j].set_xlabel(f"Play Count:{song_plays[k]}")
axs[i, j].set_yticks([])
axs[i, j].invert_yaxis()
axs[i, j].spines['right'].set_visible(False)
axs[i, j].spines['top'].set_visible(False)
axs[i, j].spines['bottom'].set_visible(False)
axs[i, j].spines['left'].set_visible(False)
plt.show()
# 当我问您我在前面对您说了什么时,请听一个笑话:
print("为什么程序员总是用黑色的背景?因为他们喜欢黑客帝国!")
```
希望这份代码能够帮到您,并让您更好地理解Python爬虫和数据可视化。如果您还有任何疑问或者需要进一步协助,都可以随时在此提问哦!