根据Apple Music歌单一键生成词云

作者:Eurikec | 发布时间: | 更新时间:

最近Apple Music可以查看自己的年度歌单了,兴趣使然下想写个脚本生成一个词云看下自己的听歌关键词,写完脚本后发现适配所有的Apple Music歌单(或者叫播放列表),下面是我自己的年度歌单词云: d49c370da7100805 随便找了个轻音少女的播放列表,词云如下: 84516b0e0c100948 最后,代码如下:
import requests
from bs4 import BeautifulSoup
from wordcloud import WordCloud
import matplotlib.pyplot as plt


urls = ["https://music.apple.com/cn/playlist/%E8%BD%BB%E9%9F%B3%E5%B0%91%E5%A5%B3-%E4%BB%A3%E8%A1%A8%E4%BD%9C%E5%93%81/pl.ccbeece8304b43b394005148782a0e4b"]

word_list = []

HEADERS = {
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "accept-encoding": "gzip, deflate, br",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "cache-control": "max-age=0",
    "upgrade-insecure-requests": "1",
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.84",
}

font_path = "/System/Library/fonts/PingFang.ttc"

for url in urls:
    res = requests.get(url, headers=HEADERS)
    res.encoding = "utf-8"
    soup = BeautifulSoup(res.text, 'lxml')

    song_name_div = soup.select("div.songs-list-row__song-name.svelte-1yo4jst")
    song_singer_div = soup.select("div.songs-list__col.songs-list__col--secondary.svelte-1yo4jst > div > span > a")
    song_album_div = soup.select("div.songs-list__col.songs-list__col--tertiary.svelte-1yo4jst > div > span > a")

    for item in song_name_div:
        word_list.append(item.get_text())
    for item in song_singer_div:
        word_list.append(item.get_text())
    for item in song_album_div:
        word_list.append(item.get_text())

counts = {}
word_cloud = []
for word in word_list:
    counts[word] = counts.get(word, 0) + 1

items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)

text_cut = '/'.join(word_list)
wordcloud = WordCloud(background_color='white',
                      font_path=font_path,
                      width=1000,
                      height=860,
                      margin=2,
                      collocations=False,).generate(text_cut)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
标签:词云图生成器, 词云图, 词云python代码, 词云制作网站, 词云生成器, 苹果音乐词云, 苹果音乐, apple music