1. 程式人生 > 其它 >中學生都喜歡什麼樣的老師?抓取知乎高贊回答告訴你

中學生都喜歡什麼樣的老師?抓取知乎高贊回答告訴你

今天一位學校老師提了這麼一個需求:想知道當前初中學生都喜歡什麼樣的老師,並可以用詞雲的方式直觀展示出來。

要製作詞雲呢,需要有一定數量的關鍵詞,以及權重值(或者出現頻率)。而要得到這些關鍵詞、權重值,必須要有一定量的內容資訊,總不能我們自己瞎編瞎寫吧~~

那今天就來和大家分享一下永恆君的整個操作過程,希望對大家能有啟發和幫助。

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比下去了
那些高大上的詞雲圖,可以這樣快速做!


歡迎交流!