◇杭州電子科技大學(xué) 劉娟娟 楊根福
本文主要設(shè)計利用爬蟲技術(shù)爬取移動端兒童數(shù)字閱讀類APP的評論區(qū)中家長以及兒童對數(shù)字閱讀的評論。通過對移動端使用抓包工具截獲APP數(shù)據(jù)包,并利用爬蟲程序模擬瀏覽器訪問網(wǎng)頁,獲取文字、音頻兩種格式的數(shù)據(jù),借助圖形化手段將清洗后的數(shù)據(jù)可視化,從而得到有價值的結(jié)論,以此分析數(shù)字化閱讀對于人們的意義和價值,幫助兒童數(shù)字化閱讀更健康地發(fā)展和優(yōu)化。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,數(shù)字化閱讀開始出現(xiàn)在人們的視野。十幾年前也有錄音機(jī)聽書,但是目前兒童數(shù)字化閱讀通常以移動端為載體,會由于人們的閱讀行為產(chǎn)生各種閱讀數(shù)據(jù),這些數(shù)據(jù)對于研究者,對于產(chǎn)品本身,和對于用戶都是非常有價值的。而對于數(shù)字化閱讀行為方面的研究,國內(nèi)外通常采用問卷調(diào)查法、訪談法、文獻(xiàn)分析法、測試法、實(shí)驗(yàn)法、日志法等非技術(shù)方法,在研究儀器上多用眼動記錄儀、功能性核磁共振儀、面部識別儀器等[1-2],而專門針對兒童評論數(shù)據(jù)進(jìn)行分析的研究還比較欠缺。
數(shù)字化閱讀相對于紙質(zhì)閱讀不再是以靜態(tài)的、扁平化的方式呈現(xiàn),對于低齡兒童,會有聲音輔助,優(yōu)美動聽的聲音和豐富多彩的音效讓兒童能較早地就能夠接受書本上的知識,動畫的效果也會讓兒童更加關(guān)注于閱讀內(nèi)容,從而在閱讀載體的方式上進(jìn)化使兒童超前閱讀。而有實(shí)驗(yàn)也表明,兒童確實(shí)是喜歡動態(tài)的事物,而且兒童的想象力是非常豐富的,兒童雖然接受了各種書本知識,但此時兒童的想象力會讓他不局限于書本,而是擁有了大量閱讀材料使得兒童的想象力得到完全的釋放。從而,兒童的閱讀興趣和認(rèn)知能力將得到前所未有的提高[3]。
數(shù)字閱讀行為數(shù)據(jù)是指兒童在進(jìn)行數(shù)字化閱讀過程中所產(chǎn)生的可見和不可見的并且可以被記錄的數(shù)據(jù)。可以概括為總括性閱讀行為數(shù)據(jù)、過程性閱讀行為數(shù)據(jù)、結(jié)果性閱讀行為數(shù)據(jù)[4]。總括性閱讀行為數(shù)據(jù)主要是指APP的一些基本數(shù)據(jù),比如用戶登錄了多少次、一次在線多久、閱讀一本書要多久、一般會閱讀基本書、總共會閱讀多少字等;過程性閱讀行為數(shù)據(jù),也就是在閱讀過程中產(chǎn)生的詳細(xì)數(shù)據(jù),比如點(diǎn)擊某個按鈕的次數(shù)、在某頁面停留了多久、數(shù)字圖書和音頻下載了多少次、音頻類圖書收聽了多少次等。結(jié)果性閱讀數(shù)據(jù),主要是指有分享與評論性質(zhì)的數(shù)據(jù),對數(shù)字圖書閱讀完以后的反饋,比如對某一個數(shù)字閱讀內(nèi)容的分享與評論,還有一些APP會有閱讀后的帶有答題性質(zhì)的小游戲,以此生成閱讀數(shù)據(jù)報告,反饋給家長可以監(jiān)控孩子的閱讀情況和效果[5]。由于數(shù)字閱讀的多媒體性質(zhì),兒童的閱讀行為也變得豐富起來。因此,本文的研究目標(biāo)是對家長及兒童的評論文本和語音信息進(jìn)行挖掘與可視化分析,以便進(jìn)一步了解家長及兒童的偏好有重要的意義。
在所要采集數(shù)據(jù)類型方面,限于第三方基本上只能抓取到可見型數(shù)據(jù),因此本設(shè)計將會采集故事類APP的評論區(qū)數(shù)據(jù),數(shù)據(jù)類型包括文本數(shù)據(jù)和音頻數(shù)據(jù),數(shù)據(jù)主體包括家長和兒童對于音頻故事的反饋;基于移動端數(shù)據(jù)抓取的多種抓包工具和抓取方法,在抓包工具上選擇Fiddler抓包工具獲取移動端APP的數(shù)據(jù)包;在抓取方法上選擇Python的Requests庫、Selenium庫來實(shí)現(xiàn)移動端數(shù)據(jù)的抓取;在爬取效率方面,用多進(jìn)程的方法,提升爬蟲程序爬取的速度和效率,實(shí)現(xiàn)高并發(fā)[6]。
爬蟲的原理就是模擬瀏覽器訪問網(wǎng)頁,然后獲取網(wǎng)頁中我們想要獲取的數(shù)據(jù)。瀏覽器訪問網(wǎng)頁的過程:在搜索欄輸入網(wǎng)頁地址后,經(jīng)過域名服務(wù)器向服務(wù)器發(fā)送請求,服務(wù)器經(jīng)過解析后會向用戶發(fā)送瀏覽器HTML、JS、CSS渲染后的結(jié)果,所以用戶看到的渲染后的結(jié)果就是由HTML代碼構(gòu)成的,爬蟲就是為了獲取想要獲取的那部分內(nèi)容,例如文本、圖片、視頻等資源,就要分析和過濾HTML代碼,編寫爬蟲程序,實(shí)現(xiàn)爬取。一個爬蟲程序的基本流程就是:
(1)發(fā)起請求。通過HTTP庫向所要訪問的站點(diǎn)發(fā)起請求,也就是發(fā)送一個request請求。
(2)獲取響應(yīng)內(nèi)容。服務(wù)器如果正常響應(yīng),我們就會得到一個response,這個response的內(nèi)容便是要獲取的頁面內(nèi)容,比如本設(shè)計要獲得的文本,就是json格式的字符串。
(3)解析內(nèi)容。獲取json格式的網(wǎng)頁內(nèi)容后,需要轉(zhuǎn)換為json對象解析。
(4)保存數(shù)據(jù)。解析出來的內(nèi)容需要保存到本地,可以保存為Excel表格里,也可以保存在數(shù)據(jù)庫里,各有優(yōu)勢。
在數(shù)據(jù)存儲和分析方面,本文使用MySQL數(shù)據(jù)庫來存儲大量數(shù)據(jù),使用詞云圖來進(jìn)行詞頻分析并作詞義分析,并用抓取到的數(shù)據(jù)對兒童數(shù)字化閱讀的特點(diǎn)、使用狀況及閱讀行為進(jìn)行分析;此外,為了便于第三方使用,發(fā)揮該設(shè)計的價值,增加爬蟲工具以及使用界面的設(shè)計。
Python是一種高級程序設(shè)計語言,可用于界面開發(fā)。界面程序選擇使用tkinter庫,tkinter是python標(biāo)準(zhǔn)的GUI庫,可用于建立GUI應(yīng)用程序,同時這是python的內(nèi)置庫,不需要額外安裝。
GUI程序主要導(dǎo)入了兩個庫,一個庫是GUI庫tkinter,用于實(shí)現(xiàn)GUI的編寫,另外一個庫是線程庫threading,用于控制爬蟲的線程,如果爬蟲掛掉,則重新啟動一個線程。這里實(shí)現(xiàn)一個名叫thread_it的函數(shù),函數(shù)首先創(chuàng)建線程,并且判斷線程是否存在,不存在線程,則重新啟動線程。實(shí)現(xiàn)另一個名叫helloCallBack的函數(shù),使用try-except語句捕獲異常,調(diào)用實(shí)例化且設(shè)置好的tkinter窗口,執(zhí)行程序,則顯示框顯示爬取中,同時取出輸入框中的爬取的故事網(wǎng)站,并把程序的輸出顯示到tkinter產(chǎn)生的窗口中。最終GUI界面如圖1所示,在框中可以輸入故事名,輸入故事網(wǎng)站,就可以實(shí)現(xiàn)對故事評論的爬取。

圖1 采集工具界面
詞云是對文本中出現(xiàn)頻率較高的一些詞語進(jìn)行突出的顯示,可以過濾掉許多無關(guān)緊要的詞語。實(shí)現(xiàn)詞云圖之前,需要進(jìn)行簡單的數(shù)據(jù)清洗工作,打開爬取的評論文本文件,評論文本包含了用戶名和對應(yīng)的評論,其中它們以 分隔,因?yàn)橹皇菍υu論進(jìn)行詞云圖可視化,因此,寫程序首先實(shí)現(xiàn)數(shù)據(jù)清洗,寫入新的文件中,且只保留評論。詞云圖程序的實(shí)現(xiàn)需要三個包,分別是jieba庫、wordcloud庫、matplotlib庫,jiaba庫實(shí)現(xiàn)對評論的分詞,wordcloud庫實(shí)現(xiàn)詞云圖的配置,matplotlib庫用于顯示詞云圖。
首先,用jieba庫對評論進(jìn)行分詞,因?yàn)榉衷~后的結(jié)果是生成器,因此需要轉(zhuǎn)換成字符串,接著設(shè)置詞云圖,設(shè)置字體為黑體,背景色為白色,最大詞語數(shù)為2000,最大字體為50,隨機(jī)值為42。設(shè)置完后,用generate語句產(chǎn)生詞云圖,用matplotlib庫顯示詞云圖,并保存詞云圖,程序結(jié)果見圖2。

圖2 數(shù)據(jù)分析結(jié)果
數(shù)字化閱讀的興起,在給兒童帶來新的閱讀體驗(yàn)的同時,也讓研究人員對數(shù)字化閱讀行為的研究成為一種必然的趨勢。本文以研究兒童數(shù)字化閱讀行為數(shù)據(jù)為主要目的,通過采用爬蟲技術(shù)爬取有代表性的數(shù)字化閱讀類APP的家長以及兒童的評論進(jìn)行采集并分析,對兒童及家長的偏好有了較為深入的認(rèn)識,得到了有益的結(jié)論。