釘釘在線(xiàn)求饒?小學(xué)生主力軍?爬取釘釘App Store真實(shí)評(píng)價(jià)數(shù)據(jù)并分析
作者 |?劉早起早起
來(lái)源 | 早起Python
一、前言
最近釘釘火了,因?yàn)橐咔橛绊?,釘釘被教育部選為給學(xué)生用來(lái)在線(xiàn)上網(wǎng)課的平臺(tái),本以為自己因?yàn)闃I(yè)務(wù)過(guò)硬得到官方的認(rèn)可,是2020上天選中的寵鵝,萬(wàn)萬(wàn)沒(méi)想到到由于小學(xué)生不爽被占用寒假時(shí)間上課,于是集體出征在各大應(yīng)用商店給釘釘打低分??

于是就出現(xiàn)了前幾天的“釘釘十一億下載量,整體評(píng)分只有一星”,真是好慘一軟件。那么就跟隨本文一起通過(guò)爬取釘釘在App Store的評(píng)分,看看用戶(hù)的真實(shí)反應(yīng)吧。
二、數(shù)據(jù)爬取
我們的目標(biāo)就是從App Store官網(wǎng)拿下這些評(píng)論數(shù)據(jù)做分析??

本來(lái)以為要寫(xiě)個(gè)爬蟲(chóng)在用正則表達(dá)式去提取,結(jié)果一搜發(fā)現(xiàn)有現(xiàn)成的App Store評(píng)論API??
https://itunes.apple.com/rss/customerreviews/page=1/id=/sortby=mostrecent/json?l=en&&cc=cn?
只要將釘釘?shù)膇d添加進(jìn)去就OK,這就很簡(jiǎn)單了,連F12都不用??

于是我們很輕松的就得到了釘釘在App Store的評(píng)論API
https://itunes.apple.com/rss/customerreviews/page=1/id=930368978/sortby=mostrecent/json?l=en&&cc=cn?
打開(kāi)看看,OK就是這個(gè)??,但是比較可惜的是App Store并沒(méi)有提供評(píng)論時(shí)間,所以對(duì)我們有用的數(shù)據(jù)就只有用戶(hù)評(píng)分、評(píng)論標(biāo)題、評(píng)論內(nèi)容。

注意到這僅僅是第一頁(yè)的評(píng)論,而通過(guò)測(cè)試發(fā)現(xiàn)最多可以查看10頁(yè)的評(píng)論,所以寫(xiě)一個(gè)簡(jiǎn)單的循環(huán)把我們需要的信息提取出來(lái),具體代碼??
import requests
import pandas as pd
from pandas import DataFrame
flag = [1,2,3,4,5,6,7,8,9,10]
urllist = []
for i in flag:
url = f"https://itunes.apple.com/rss/customerreviews/page={i}/id=930368978/sortby=mostrecent/json?l=en&&cc=cn"
urllist.append(url)
rating = [] #評(píng)分
title = [] #標(biāo)題
content = [] #內(nèi)容
for url in urllist:
res = requests.get(url)
data = res.json()['feed']['entry']
for i in range(len(data)):
rating.append(data[i]['im:rating']['label'])
title.append(data[i]['title']['label'])
content.append(data[i]['content']['label'])
data = {'打分':rating,
'標(biāo)題':title,
'內(nèi)容':content
}
df = DataFrame(data)最終爬取的數(shù)據(jù)長(zhǎng)這樣??

三、數(shù)據(jù)分析
我們首先看下這500條評(píng)分的分值分布

從圖中可以看出一共500次評(píng)分,1分和5分占了490次,其中打一分的250人,5分的240人,而2分、3分、4分的人數(shù)則分別為1、3、6人??磥?lái)打分的各位還真是愛(ài)憎分明。
接著我們?cè)購(gòu)膖itle和content中提取與學(xué)生相關(guān)的文字并統(tǒng)計(jì)??

看來(lái)不管是不是評(píng)論者是不是小學(xué)生,都喜歡在評(píng)論里面聊小學(xué)生。
我們?cè)俳y(tǒng)計(jì)一下標(biāo)題和內(nèi)容中出現(xiàn)最多的一些關(guān)鍵詞??梢杂胮andas里面的.str.contains()方法??

再可視化一下??

可以看到,給好評(píng)的人和給一星的人旗鼓相當(dāng),有罵釘釘吵著下架的,也有鼓勵(lì)釘釘喊著加油的。但是唯一值得關(guān)注的是,有不少人想分期消費(fèi)


好了,最后我們來(lái)制作下詞云圖,上面的可視化主要利用pyecharts,具體在我之前文章中有詳細(xì)說(shuō)明。而詞云圖的制作選擇了python里的wordcloud庫(kù),具體使用方法就不細(xì)說(shuō),看代碼??
from wordcloud import WordCloud
import matplotlib.pyplot as plt #繪制圖像的模塊
import jieba #jieba分詞
path_txt='content.txt'
f = open(path_txt,'r',encoding='UTF-8').read()
# 結(jié)巴分詞,生成字符串,wordcloud無(wú)法直接生成正確的中文詞云
cut_text = " ".join(jieba.cut(f))
wordcloud = WordCloud(
#設(shè)置字體,不然會(huì)出現(xiàn)口字亂碼,文字的路徑是電腦的字體一般路徑,可以換成別的
font_path="msyh.ttc",
#設(shè)置了背景,寬高
background_color="white",width=2000,height=1880).generate(cut_text)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()從標(biāo)題生成的詞云圖來(lái)看,依舊是褒貶摻半

下面是由內(nèi)容生成的詞云圖

四、結(jié)束語(yǔ)
以上就是本文的全部?jī)?nèi)容,筆者也是使用釘釘進(jìn)行辦公。而對(duì)于釘釘這波哭笑不得的熱搜,我想釘釘官方鬼畜已經(jīng)給出了答案





