◆顏潔
大數(shù)據(jù)技術(shù)背景下輿情收集與監(jiān)測分析
◆顏潔
(武警湖北省總隊(duì) 湖北 430000)
公民自發(fā)形成的輿論圈,交流更為便捷,傳播更為多元,使得輿情具有了隨意性、直接性、偏差性、突發(fā)性四大特征,對社會中的輿情傳播產(chǎn)生的影響不可小覷,所以需要及時掌握公民輿情的發(fā)展動態(tài)。本文在現(xiàn)有國內(nèi)外輿情收集與監(jiān)測的基礎(chǔ)上,構(gòu)建了以Python爬蟲技術(shù)為基礎(chǔ)的輿情收集與監(jiān)測系統(tǒng),并且根據(jù)管理人員的實(shí)際需求對系統(tǒng)做了詳細(xì)的分析與設(shè)計(jì),通過網(wǎng)絡(luò)討論平臺獲取大量輿情數(shù)據(jù)進(jìn)行整合分析,從而實(shí)現(xiàn)多態(tài)勢輿情的實(shí)時監(jiān)控和輿情數(shù)據(jù)分析的可視化。
大數(shù)據(jù)技術(shù);輿情收集;監(jiān)測分析
本系統(tǒng)通過robot協(xié)議可以分析爬取的目標(biāo)網(wǎng)站中哪些數(shù)據(jù)是對外開放可以進(jìn)行爬取的,可以有效排除掉不允許爬取的數(shù)據(jù)。在國際上,robot協(xié)議沒有明確的規(guī)定,它是一種道德類型的行業(yè)內(nèi)協(xié)議,在爬取的過程中,它用來抵制惡意爬取而用作非法行為。robot協(xié)議是爬蟲技術(shù)人員在道德層面必須遵守的道德標(biāo)桿,所有的行業(yè)人員都不應(yīng)該惡意觸碰這個道德標(biāo)桿。在此設(shè)計(jì)中,百度互聯(lián)網(wǎng)網(wǎng)頁的網(wǎng)站內(nèi)有些是robot協(xié)議禁止爬取的,但是本設(shè)計(jì)用作輿情收集與監(jiān)測,保護(hù)公民的身體安全和心理健康,所以此設(shè)計(jì)需要在某些地方跨過robot協(xié)議,對正常的數(shù)據(jù)進(jìn)行爬取。
1.2.1爬蟲原理
爬蟲是通過向目標(biāo)網(wǎng)站發(fā)出爬取請求,并得到目標(biāo)網(wǎng)站回應(yīng)的過程。爬蟲通過對先前預(yù)設(shè)好的爬取規(guī)則不斷向目標(biāo)網(wǎng)站獲取數(shù)據(jù)存儲到本機(jī),網(wǎng)絡(luò)中每個資源都是由一個唯一的URL(Universal Resource Identifier,通用資源標(biāo)識符)確定的,根據(jù)URL也可以定位到網(wǎng)絡(luò)中的唯一一個資源。HTTP(超文本傳輸協(xié)議)協(xié)議提供了發(fā)布與接收HTML頁面的方法,由HTML語言編寫的網(wǎng)頁代碼可由瀏覽器渲染成結(jié)構(gòu)清晰的頁面。
1.2.2爬蟲流程
爬蟲通過URL對目標(biāo)網(wǎng)站進(jìn)行數(shù)據(jù)請求,當(dāng)目標(biāo)網(wǎng)站接收爬蟲的請求之后就開始對網(wǎng)頁進(jìn)行分析,爬蟲將按照之前設(shè)定好的爬蟲順序?qū)W(wǎng)頁依次進(jìn)行URL的請求,目標(biāo)網(wǎng)站不斷處理爬蟲請求,并將爬蟲程序設(shè)定的需要進(jìn)行爬取的數(shù)據(jù)依次存儲到接口內(nèi)的數(shù)據(jù)庫中,最終爬蟲將目標(biāo)網(wǎng)站所有的請求處理完畢之后爬取結(jié)束。
1.2.3爬取方式
爬蟲的爬取方式包括:橫向爬取、縱向爬取。在系統(tǒng)中,以百度互聯(lián)網(wǎng)網(wǎng)頁為例,選取橫向爬蟲抓取,從列表第一頁開始,根據(jù)輸入地爬取頁數(shù)不斷地向后翻頁,把下一頁的URL加入到等待爬取的隊(duì)列當(dāng)中。此設(shè)計(jì)使用橫向爬取方法,在規(guī)模不大的情況下,將設(shè)定好目標(biāo)互聯(lián)網(wǎng)網(wǎng)頁和頁數(shù)以后逐頁進(jìn)行數(shù)據(jù)爬取并存儲,可以將本系統(tǒng)的性能大幅度提升。
Scrapy框架作為Python語言中開源的第三方庫,它在爬取的過程中,有對目標(biāo)網(wǎng)站的數(shù)據(jù)爬取速度快、編寫語言簡潔、適用性強(qiáng)等優(yōu)點(diǎn),在特定網(wǎng)站中爬取制定的數(shù)據(jù)結(jié)構(gòu)類型,同時Scrapy框架可以根據(jù)開發(fā)者不同的開發(fā)需求,對此框架進(jìn)行相應(yīng)的改進(jìn)。本系統(tǒng)采用Scrapy作為Python爬蟲最關(guān)鍵的技術(shù),它是一個較高層級的網(wǎng)頁爬取工具,在目標(biāo)網(wǎng)頁中將數(shù)據(jù)以特定的結(jié)構(gòu)抓取下來,使用范圍非常廣泛,是輿情收集與監(jiān)測、輿情分析必不可少的工具。它的中控系統(tǒng)為Engine(中心引擎),將管道、下載器、爬蟲、調(diào)度器連接到一起,通過中心引擎進(jìn)行數(shù)據(jù)之間的傳遞與交流。調(diào)度器將中心引擎的請求命令進(jìn)行歸類操作,按照預(yù)定方式進(jìn)行排序,然后有序地將請求命令返回中心引擎,相當(dāng)于中心引擎的“加工車間”。下載器將中心引擎的請求交付于網(wǎng)頁,并且接收網(wǎng)頁的回應(yīng)交付給中心引擎。爬蟲將從網(wǎng)頁的回應(yīng)中提取其中有用的數(shù)據(jù),然后將下一步需要請求的URL交付給中心引擎,調(diào)度器往返之前的操作,實(shí)現(xiàn)爬取的自動化。管道將爬蟲得到的Item(項(xiàng)目)進(jìn)行一系列的操作。
因?yàn)楸鞠到y(tǒng)需要爬取的數(shù)據(jù)規(guī)模不大,只需要選擇其中爬取的頁數(shù)就可以實(shí)現(xiàn)系統(tǒng)的需求。所以本系統(tǒng)選擇Spider爬蟲類,通過start_urls使爬蟲從網(wǎng)頁的第一列表頁開始向后爬取選擇的頁數(shù),同時使用Spider爬蟲類,編寫系統(tǒng)代碼的工作量會輕松很多,方便后期對程序的完善。
本系統(tǒng)使用PyCharm作為開發(fā)工具,以Python作為開發(fā)語言,以Scrapy爬蟲框架進(jìn)行數(shù)據(jù)的收集,以Mysql作為數(shù)據(jù)存儲庫,以Jieba進(jìn)行分詞,用Pandas、Matplotlib、Numpy等工具進(jìn)行數(shù)據(jù)可視化處理。從經(jīng)濟(jì)可行性上考慮,本系統(tǒng)所使用的PyCharm是官方免費(fèi)版軟件,涉及到的開發(fā)技術(shù)、包都為開源免費(fèi)的,所使用數(shù)據(jù)庫也為免費(fèi)的。從法律可行性上考慮,本系統(tǒng)所使用的軟件、數(shù)據(jù)庫、技術(shù)在使用過程中不涉及版權(quán)問題,得到的數(shù)據(jù)均為網(wǎng)頁公開數(shù)據(jù),所以系統(tǒng)在法律上是可行的。本系統(tǒng)以Scrapy框架作為Python爬蟲最關(guān)鍵的技術(shù),它是一個較高層級的網(wǎng)頁爬取工具,在目標(biāo)網(wǎng)頁中將數(shù)據(jù)以特定的結(jié)構(gòu)抓取下來,使用范圍非常廣泛,是輿情監(jiān)測、輿情分析必不可少的工具。
2.2.1業(yè)務(wù)需求分析
本文以互聯(lián)網(wǎng)網(wǎng)頁作為信息源進(jìn)行分析研究,以爬取到互聯(lián)網(wǎng)網(wǎng)頁內(nèi)容作為系統(tǒng)的初步目標(biāo)。由于互聯(lián)網(wǎng)網(wǎng)頁內(nèi)容繁雜,反爬蟲機(jī)制健全,無法通過短時間內(nèi)獲取到一定規(guī)模的有效信息,故系統(tǒng)可以根據(jù)需求任意選擇爬取的互聯(lián)網(wǎng)網(wǎng)頁名字和爬取的頁數(shù),根據(jù)輿情發(fā)展時間和熱度的高低設(shè)定互聯(lián)網(wǎng)網(wǎng)頁爬取范圍。主要工作放在信息分析方面,通過數(shù)據(jù)展示出公民最為關(guān)心的問題,從而提前預(yù)知輿情的走向。系統(tǒng)本身不會生成數(shù)據(jù)信息,系統(tǒng)所需的數(shù)據(jù)信息來源于互聯(lián)網(wǎng)網(wǎng)頁中公民的發(fā)帖與評論。但是由于互聯(lián)網(wǎng)網(wǎng)頁的數(shù)據(jù)庫并不向用戶開放,所以要想得到所需要的數(shù)據(jù)需要利用爬蟲技術(shù)對互聯(lián)網(wǎng)網(wǎng)頁中的原始數(shù)據(jù)進(jìn)行爬取,為系統(tǒng)進(jìn)行數(shù)據(jù)分析創(chuàng)造條件。根據(jù)輿情收集與監(jiān)測者的需求選擇爬取的互聯(lián)網(wǎng)網(wǎng)頁名字與爬取帖子的頁數(shù)。
2.2.2功能性需求分析
系統(tǒng)通過對互聯(lián)網(wǎng)網(wǎng)頁數(shù)據(jù)的水平廣度進(jìn)行爬取。其中水平爬取是將互聯(lián)網(wǎng)網(wǎng)頁進(jìn)行廣度優(yōu)先爬取操作,可以實(shí)現(xiàn)在網(wǎng)頁的第一層就可獲得所需要的數(shù)據(jù),很大程度上提升了數(shù)據(jù)爬取的效率。由于百度互聯(lián)網(wǎng)網(wǎng)頁對反爬蟲機(jī)制做得相對完善,反爬蟲機(jī)制對于一個主機(jī)IP頻繁訪問和流量訪問進(jìn)行監(jiān)控,從而達(dá)到對爬蟲的限制,一旦對本機(jī)IP進(jìn)行封鎖后,此IP將不能繼續(xù)進(jìn)行數(shù)據(jù)的爬取,所以此系統(tǒng)必須要克服反爬蟲機(jī)制的限制,具備在反爬蟲機(jī)制下爬取數(shù)據(jù)的能力。系統(tǒng)分析數(shù)據(jù)功能是指將爬取數(shù)據(jù)得到的帖子以及評論信息進(jìn)行處理,實(shí)現(xiàn)數(shù)據(jù)的可視化功能。數(shù)據(jù)處理首先要除去數(shù)據(jù)中無效的數(shù)據(jù),將有效的數(shù)據(jù)按照類別特征轉(zhuǎn)化為相應(yīng)的特征數(shù)值,篩選掉冗余的數(shù)據(jù)。其次處理干凈的數(shù)據(jù)通過圖表的形式,將互聯(lián)網(wǎng)網(wǎng)頁中有效的信息進(jìn)行挖掘,從而達(dá)到用戶可讀的可視化效果,給用戶提供參考依據(jù)。
綜上所述,肺癌患者的CA199、CA125、CA153及CEA指標(biāo)均有著明顯的升高現(xiàn)象,臨床上早期對肺癌患者的CA199、CA125、CA153及CEA等指標(biāo)進(jìn)行監(jiān)測,能夠幫助治療人員對患者疾病的發(fā)展程度進(jìn)行判斷,有著較高的臨床價值。
3.1.1爬蟲框架的搭建
爬蟲是通過向目標(biāo)網(wǎng)站發(fā)出爬取請求,并得到目標(biāo)網(wǎng)站回應(yīng)的過程。爬蟲通過對先前預(yù)設(shè)好的爬取規(guī)則不斷向目標(biāo)網(wǎng)站獲取數(shù)據(jù)存儲到本機(jī),在爬蟲的過程中需要對網(wǎng)站進(jìn)行解析,其主要依托于以下幾種技術(shù)。
爬蟲流程如前所述。系統(tǒng)使用到的開發(fā)程序?yàn)镻ycharm,它是JetBrains設(shè)計(jì)開發(fā)的一款由Python語言進(jìn)行編程的軟件。Pycharm開發(fā)軟件中可以自定義第三方的庫,下載Scrapy框架庫和該庫需要并行的第三方庫,配置所有庫所需要的運(yùn)行環(huán)境,將存儲接口連接到數(shù)據(jù)庫,就可以通過解析網(wǎng)頁實(shí)現(xiàn)對數(shù)據(jù)爬取并且存儲。
3.1.2系統(tǒng)爬取
用戶通過系統(tǒng)輸入任何一個合法互聯(lián)網(wǎng)網(wǎng)頁名字,然后根據(jù)輿情預(yù)測規(guī)模大小并結(jié)合自身情況選擇需要爬取互聯(lián)網(wǎng)網(wǎng)頁網(wǎng)站的頁數(shù)(每頁的爬取時間在4秒鐘左右)。
獲取頁面信息,并用Xpath解析內(nèi)容,通過頁面分析可知道每一個帖子都是一個li。循環(huán)遍歷取出內(nèi)容,并拼接帖子URL,進(jìn)入帖子詳情頁面通過HTML分析獲得一樓文本。系統(tǒng)會自動翻頁爬取互聯(lián)網(wǎng)網(wǎng)頁的標(biāo)題、作者、發(fā)布時間、鏈接、回復(fù)數(shù)量、帖子內(nèi)容。將爬取到的數(shù)據(jù)存儲到Mysql數(shù)據(jù)庫的baidu庫下。
用戶可以根據(jù)數(shù)據(jù)的可視化視圖完整地看到目標(biāo)網(wǎng)站的所有帖子內(nèi)容,根據(jù)標(biāo)題、內(nèi)容、回復(fù)數(shù)量直觀地了解每一個話題的內(nèi)容和關(guān)注程度,細(xì)致地掌握每一個話題的動向。
系統(tǒng)在爬蟲對互聯(lián)網(wǎng)網(wǎng)頁的數(shù)據(jù)進(jìn)行一定規(guī)模的爬取后,對目標(biāo)數(shù)據(jù)進(jìn)行重新審核檢查和校驗(yàn),將重復(fù)的數(shù)據(jù)信息進(jìn)行刪減,改正格式不正確的數(shù)據(jù),最終保證數(shù)據(jù)的獨(dú)立性和統(tǒng)一性,形成系統(tǒng)可以將數(shù)據(jù)進(jìn)行批處理的歸一化基礎(chǔ)。通過對初始臟數(shù)據(jù)的預(yù)處理,得到干凈、連續(xù)、標(biāo)準(zhǔn)的可進(jìn)行Python庫可視化操作的數(shù)據(jù)。為系統(tǒng)進(jìn)一步的模型建立提供準(zhǔn)確性。通過使用duplicated()函數(shù)pandas函數(shù),集中進(jìn)行檢測是否存在數(shù)據(jù)重復(fù),將重復(fù)的數(shù)據(jù)利用drop_duplicates()函數(shù)進(jìn)行刪除。然后利用第三方Jieba庫,導(dǎo)入自定義詞典,獲取停用詞list,然后刪除jieba空格、刪除停止詞后的分詞,使用reverse降序排序字典,最后得到關(guān)鍵詞以及關(guān)鍵詞出現(xiàn)的次數(shù),完成分詞操作,對后面數(shù)據(jù)分析創(chuàng)造條件。
3.3.1詞云展示
Python語言中pyecharts庫是一個開源的完成詞云繪制的關(guān)鍵庫。首先引入pandas庫和numpy庫對數(shù)據(jù)進(jìn)行分析,通過pandas庫中的read-csv進(jìn)行文件的讀取,再通過文件的具體類型進(jìn)行sep參數(shù)的設(shè)置,利用字符串join方法,使列表轉(zhuǎn)化為字符串。第二,引入collection庫中的counter方法,返回詞匯出現(xiàn)頻率的統(tǒng)計(jì)。第三,使用sorted方法和lambda函數(shù)得到分詞關(guān)鍵詞,用“choices_number=50”取出關(guān)鍵詞出現(xiàn)頻率排名在前50的關(guān)鍵詞。最后,通過pyecharts庫,設(shè)置wordcloud.add參數(shù)字體、顏色、大小、傾斜度。
為了使輿情信息得到及時發(fā)現(xiàn)和處理。詞云是輿情管理人員發(fā)現(xiàn)公民動態(tài)異常、掌握公民近期關(guān)注話題最直接的方式。詞云通過詞匯的形式展示公民近期最佳關(guān)注的話題,詞匯區(qū)分顏色、大小和位置,將出現(xiàn)次數(shù)最多的詞匯放到圖形的中心并且增加字號,系統(tǒng)管理人員可以第一時間發(fā)現(xiàn)熱點(diǎn)話題,如果話題內(nèi)容為負(fù)面詞匯,可以第一時間掌控信息,扭轉(zhuǎn)輿情的爆發(fā)。
3.3.2熱點(diǎn)話題詞頻
通過引入jieba庫中的anasyle方法,收集數(shù)據(jù)中每個關(guān)鍵詞匯以及每個關(guān)鍵詞出現(xiàn)的頻率。對詞頻前20名的詞匯出現(xiàn)頻率以柱狀圖的形式展示出來,可以使得輿情管理人員掌握對熱點(diǎn)話題的關(guān)注人數(shù),了解輿情的規(guī)模大小。
例如,本系統(tǒng)對山東管理學(xué)院的論壇話題進(jìn)行監(jiān)測與分析。通過后臺對高頻詞的分析,對有效、重要的高頻詞進(jìn)行統(tǒng)計(jì),可以明顯地看出關(guān)鍵詞中“考研”出現(xiàn)的頻率最高,說明“考研”是山東管理學(xué)院最受關(guān)注的話題,足以說明學(xué)習(xí)氛圍的濃郁。其次,開學(xué)、成績、專升本、資料等關(guān)鍵詞出現(xiàn)頻率也都排在前列并且差距不大,這些關(guān)鍵詞都為正面話題。當(dāng)某一種關(guān)鍵詞的出現(xiàn)頻率遠(yuǎn)高于其他關(guān)鍵詞或者有負(fù)面關(guān)鍵詞出現(xiàn)時,則會有輿情爆發(fā)的風(fēng)險(xiǎn),管理人員應(yīng)隨時關(guān)注,及時作出相應(yīng)的決策。
3.3.3互聯(lián)網(wǎng)網(wǎng)頁評論數(shù)量區(qū)間
通過統(tǒng)計(jì)互聯(lián)網(wǎng)網(wǎng)頁不同樓層范圍內(nèi)的回復(fù)數(shù)量,將20層設(shè)為分界點(diǎn)。統(tǒng)計(jì)數(shù)據(jù)中20層以上的樓層如果占比越大,說明此時間段內(nèi)可能會出現(xiàn)熱點(diǎn)話題討論高潮,意味著將會有輿情的發(fā)生,所以根據(jù)實(shí)時監(jiān)控樓層回復(fù)數(shù)量的占比,可以有效預(yù)測輿情的發(fā)生,詞云和排名前20的關(guān)鍵詞分析出輿情的主題,從而使輿情管理人員及時地做出決策,避免負(fù)面輿情的發(fā)展。
本文通過使用Python語言實(shí)現(xiàn)了一個簡單的輿情收集與監(jiān)測系統(tǒng),功能基本完善,對互聯(lián)網(wǎng)網(wǎng)頁的監(jiān)測具有一定的效果。隨著大數(shù)據(jù)時代的到來,人們對網(wǎng)絡(luò)的依賴性與迷茫性很高,此系統(tǒng)將人們在網(wǎng)絡(luò)中的言行舉止記錄下來,關(guān)注他們在生活中的另一種狀態(tài),在一定程度上可以幫助公民調(diào)整心態(tài),避免輿情的大面積爆發(fā),具有一定的實(shí)現(xiàn)意義。
[1]李文軍. 大數(shù)據(jù)時代網(wǎng)絡(luò)輿情管理機(jī)制研究[D].電子科技大學(xué),2021.
[2]陳旭輝,郭常斐.大數(shù)據(jù)背景下輿情的傳播和應(yīng)對研究[J].廈門城市職業(yè)學(xué)院學(xué)報(bào),2021,23(01):7-12.
[3]于寧. 輿情傳播態(tài)勢預(yù)測的研究與系統(tǒng)實(shí)現(xiàn)[D].濟(jì)南大學(xué),2019.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2022年7期