中學生都喜歡什麼樣的老師?抓取知乎高贊回答告訴你
今天一位學校老師提了這麼一個需求:想知道當前初中學生都喜歡什麼樣的老師,並可以用詞雲的方式直觀展示出來。
要製作詞雲呢,需要有一定數量的關鍵詞,以及權重值(或者出現頻率)。而要得到這些關鍵詞、權重值,必須要有一定量的內容資訊,總不能我們自己瞎編瞎寫吧~~
那今天就來和大家分享一下永恆君的整個操作過程,希望對大家能有啟發和幫助。
1、獲取內容資訊
這一步是基礎,獲取的方式有很多樣,但無外乎就是兩類
直接內容,如給學生調查問卷,整理成稿
間接內容,如網上搜集相關資料文章、相關問答
永恆君採取的是第二種,直接從知乎上面找到相關內容的高贊回答的問題,然後將該問題的所有答案都抓取下來。
如這個問題,相關性就比較高,瀏覽量和回答人數也還算可以。(當然你也可以選擇其他你認為更合適的問題。)
接下來就要使用我們的web scraper來抓取資料了,配置很簡單,主要就是配置Element Scroll down就好了。
完整的sitemap參考這裡:
{"_id":"zhihu_answers","startUrl":["https://www.zhihu.com/question/24601413"],"selectors":[{"id":"articles","type":"SelectorElementScroll","parentSelectors":["_root"],"selector":"div.List-item","multiple":true,"delay":2000},{"id":"name","type":"SelectorText","parentSelectors":["articles"],"selector":"#Popover34-toggle a","multiple":false,"regex":"","delay":0},{"id":"text","type":"SelectorText","parentSelectors":["articles"],"selector":"span[itemprop='text']","multiple":false,"regex":"","delay":0}]}
抓取到的資料,經過整理得到想要的回答內容如下:
將上述抓取到的資料內容儲存到goodteacher.txt備用,這樣我們就得到了最重要的基礎資料。
2、獲取關鍵詞和權重(詞頻)
這一步需要有一點程式設計的能力,永恆君這裡使用python的jieba庫,完整程式碼如下:
點選檢視程式碼
##20210708 從txt文件中讀取文章,自動分詞,計算詞頻 import jieba.analyse import numpy as np from wordcloud import WordCloud from PIL import Image import pandas as pd image= Image.open('teacher.jpg')#開啟背景圖 graph = np.array(image)#讀取背景圖 f=open('goodteacher.txt','r') contents=f.read() jieba.analyse.set_stop_words('stop.txt')#設定停用詞 result=jieba.analyse.extract_tags(contents,topK=2000,withWeight=True,allowPOS=("a","an","ad","v")) keywords = dict() for i in result: keywords[i[0]]=i[1] print(keywords) df=pd.DataFrame([keywords]).T.reset_index() df.columns=['key','value'] df.to_excel("keywords.xlsx")
提取goodteacher.txt內容的動詞、形容詞之後,經過簡單的統計整理,生成keywords.xlsx,得到如下的結果:
當然,這其中還包含了一些無效、或者對主題無意義的詞,可以按需求進行適當的修改。
3、生成詞雲
有了上述的關鍵詞檔案keywords.xlsx之後,生成詞雲的方式就有很多了,網上能搜到許多的線上詞雲網站,但是一般都會有這樣那樣的限制,感覺不方便。
永恆君這裡依然使用的是python,通過呼叫wordcloud庫,可以非常方便的生成想要的詞雲,沒有這樣那樣的限制。
完整程式碼:
點選檢視程式碼
##20210708 從直接從excel中詞頻,生成詞雲
import numpy as np
from wordcloud import WordCloud
from PIL import Image
import pandas as pd
image= Image.open('teacher2.jpg')#開啟背景圖
graph = np.array(image)#讀取背景圖
df=pd.read_excel("keywords.xlsx")
keywords=df.set_index("key").to_dict()['value']
wc = WordCloud(font_path=r'C:\Windows\Fonts\simhei.ttf',
background_color='White',
max_words=1000,
width=1000,
height=500,
mask=graph,
scale=4,
)
#font_path:設定字型,max_words:出現的最多詞數量
wc.generate_from_frequencies(keywords)#按詞出現的頻率
wc.to_file("myfavteacher.jpg")
最後生成的兩種詞雲圖如下:
可以看到,初中學生喜歡的老師大致畫像是幽默、溫柔、尊重人、能開玩笑、有趣等等。
其中溫柔排這麼前,是否說明現在的初中女老師居多呢?
你可能還會想看:
不寫程式碼玩轉爬蟲例項(6) – 抓取知乎搜尋的資料
用Python爬取28010條《隱祕的角落》評論,我發現了這些…
python助你快速讀懂文字內心!
什麼情況?python這次居然被web scraper比下去了
那些高大上的詞雲圖,可以這樣快速做!
歡迎交流!