首先附上制作的網易雲詞雲圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL00ERNp3ZE10MNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2kDO3MTOxITMzIjMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
有了蝦米的經驗,今天準備制作網易雲歌單,同理,我也去XHR裡面找了一下。
畫對勾的,其響應為一個html,裡面包含了我想要的歌曲資訊,手動儲存該html。
我想要的資訊又在html的<body></body>裡面,通過bt4擷取該标簽的文本内容text。
而我想要的歌名 歌手名 其在text中的形式為: "name":"歌名" "name":"歌手名"
即我隻要比對 "name":"xxx" 即可
=================代碼================================
# -*- coding: utf-8 -*-
"""
Created on Sun Feb 23 08:47:10 2020
@author: leslielee
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
url = 'https://music.163.com/#/my/m/music/playlist?id=321080292'
response = requests.get(url,headers=headers)
print(response.status_code)
"""
from bs4 import BeautifulSoup
import re
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import numpy as np
from PIL import Image
import collections # 詞頻統計庫
path = 'D:/Documents/python/wordcloud/detail.html'
# 擷取html内容
html = BeautifulSoup(open(path,encoding='utf-8'),features='html.parser')
# 提取 <body></body>裡面的文本内容
body = html.body.text
pattern = re.compile(r'"name":"(.*?)"')
names = pattern.findall(body)
#詞頻統計
word_counts = collections.Counter(names) # 對分詞做詞頻統計
# 詞頻展示
mask = np.array(Image.open('D:/Documents/python/wordcloud/madonna.jpg')) # 定義詞頻背景
wc = WordCloud(
background_color='white', # 設定背景顔色
mask=mask, # 設定背景圖
max_words=250, # 最多顯示詞數
random_state=42,
max_font_size=150, # 字型最大值
scale=32, #圖檔清晰度
font_path="C:/Windows/Fonts/STXINGKA.TTF" # 解決顯示口字型亂碼問題
)
# 生成詞雲
wc.generate_from_frequencies(word_counts)
image_colors = ImageColorGenerator(mask, default_color=(255,23,140))
wc.recolor(color_func=image_colors)
wc.to_file('D:/Documents/python/wordcloud/songs7.jpg')
注:
1.系統字型檔案路徑
C:/Windows/Fonts/
2.csdn的圖檔上傳怎麼弄? 我隻會截圖複制粘貼。
3.看人家的部落格園頁面制作的很不錯。