版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于python關(guān)系網(wǎng)絡(luò)數(shù)據(jù)化的實現(xiàn)摘要隨著現(xiàn)代社會互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)民不斷增多,網(wǎng)絡(luò)給我們的現(xiàn)代生活帶來了很多方便之處,但是,它在發(fā)揮對我們有利的用處的同時,也帶來了存在著一些不好的地方。例如,網(wǎng)絡(luò)加速了人們對于一些事件的討論的傳播,容易造成一種輿論傾向。因此,針對熱點話題的數(shù)據(jù)采集和分析可以更好地了解網(wǎng)絡(luò)熱點走向,并加以控制。本文主要從整個設(shè)計的技術(shù)要求、系統(tǒng)設(shè)計、系統(tǒng)實現(xiàn)展開,圍繞數(shù)據(jù)采集、數(shù)據(jù)分析及數(shù)據(jù)可視化這三個方面來進行闡述。本設(shè)計利用python語言,通過scrapy框架來抓取數(shù)據(jù),數(shù)據(jù)庫采用的是mysql,前端框架采用bootstrap和jquery,后端框架采用flask,可視化是利用的echarts工具,進行前后端交互,分析熱度與內(nèi)容的關(guān)系,提取文本信息進行分類,來實現(xiàn)對網(wǎng)絡(luò)狀況的分析。同時,也能夠同步觀察到數(shù)據(jù)的實時情況。通過本設(shè)計,可以更有效的了解到網(wǎng)絡(luò)的近況。關(guān)鍵詞:數(shù)據(jù)分析,F(xiàn)lask,Echarts,Mysql
AnalysisandvisualizationofnetworkhotspotdatabasedonpythonAbstractWiththerapiddevelopmentoftheInternetinmodernsociety,andtheincreasingnumberofInternetusers,thenetworkhasbroughtalotofconveniencetoourmodernlife,butitisbeneficialtous,butalsobringssomebadplaces.Forexample,thenetworkacceleratesthespreadofpeople'sdiscussionaboutsomeevents,whichiseasytocauseapublicopiniontendency.Therefore,datacollectionandanalysisonhottopicscanbetterunderstandthetrendofnetworkhotspotsandcontrolthem.Thispapermainlyexpoundsthetechnicalrequirements,systemdesignandsystemrealization:dataacquisition,dataanalysisanddatavisualization.Thisdesignusespythonlanguagetograspthedatathroughscrapyframework.Thedatabaseadoptsmysql,thefront-endframeworkadoptsbootstrapandjquery,andtheback-endframeworkadoptsflask.Visualisaechartstooltoconductfrontandrearend,analyzetherelationshipbetweenheatandcontent,andextracttextinformationtorealizetheanalysisofnetworkstatus.Atthesametime,thereal-timesituationofthedatacanalsobeobservedsimultaneously.Throughthisdesign,wecanmoreeffectivelyunderstandtherecentsituationofthenetwork.Keywords:dataanalysis,Flask,Echarts,Mysql
目錄TOC\o"1-3"\h\u31501第一章緒論 第一章緒論1.1開發(fā)背景及意義由于互聯(lián)網(wǎng)技術(shù)的不斷快速發(fā)展,我們生活周圍到處都是數(shù)據(jù),逐漸被數(shù)據(jù)所充斥著,而這些數(shù)據(jù)再由各種各樣的系統(tǒng)形成大數(shù)據(jù),展現(xiàn)出從量變到質(zhì)變的價值時代[1]?;ヂ?lián)網(wǎng)是一個既對我們生活的有利的工具,它的到來和發(fā)展給我們的生活帶來了非常大的便捷,可以實時并且快速的了解到同一時間點,不同空間所發(fā)生的事情。但是在帶來好處的同時,也給帶來了其他的變化,例如現(xiàn)在各種社交軟件層出不窮,人們可以隨意的在網(wǎng)絡(luò)上發(fā)表自己的觀點,在網(wǎng)上一件普通的事情很可能就會被熱議成一件麻煩的大事,如果在有心人的引導(dǎo)下,會發(fā)展成一種輿論波動。因此,通過搜集互聯(lián)網(wǎng)數(shù)據(jù),對當(dāng)下熱門事件進行分析,掌握它所圍繞的中心主題,了解它的趨勢和發(fā)展,顯得尤為重要。因此,對于數(shù)據(jù)的采集在任何一個任務(wù)中都是顯得極其關(guān)鍵,之后對于數(shù)據(jù)進行處理、分析、預(yù)測也是基于這個基礎(chǔ)之上的。對于數(shù)據(jù)的采集有在傳感器上利用物聯(lián)網(wǎng)的數(shù)據(jù)采集,也有利用網(wǎng)絡(luò)信息技術(shù)的數(shù)據(jù)收集。例如,在智能交通的研究中,有基于GPS的定位信息采集、基于交通攝像頭的視頻采集,基于交通卡口的圖像采集以及基于路口的線圈信號采集等[2]。但從目前的技術(shù)來看,還沒有技術(shù)能夠在特別短的時間內(nèi)進行搜集、整理、管理這些復(fù)雜又龐大的數(shù)據(jù)。這也導(dǎo)致了了數(shù)據(jù)可視化技術(shù)的快速發(fā)展。隨著各種智能終端設(shè)備的產(chǎn)生,數(shù)據(jù)可視化技術(shù)也趨于成熟。如今,正因為技術(shù)的發(fā)展便捷,上網(wǎng)人數(shù)逐漸龐大,網(wǎng)絡(luò)上的發(fā)言也占有一席之地。不知道小事是否會被有心人利用放大,或者重要的事情因為人們的關(guān)注傾向而忽略。因此,根據(jù)網(wǎng)絡(luò)熱點研究網(wǎng)民群體所關(guān)注的方向、人數(shù)關(guān)注比較多的事件與熱度的關(guān)系,更夠更加便利地了解到網(wǎng)絡(luò)狀況,并及時做出防治和調(diào)整。1.2國內(nèi)外現(xiàn)狀與發(fā)展趨勢1.2.1國內(nèi)外研究現(xiàn)狀國外對于網(wǎng)絡(luò)熱點的研究較少,主要是針對技術(shù)研究,尤其是數(shù)據(jù)科學(xué)方面,在數(shù)據(jù)處理上進行不斷研究,分析、優(yōu)化和設(shè)計算法以及一些處理方式。同時,在可視化技術(shù)方面也經(jīng)常用于生活實踐中,主要針對遇一些社會熱點問題。通過查詢資料,《華盛頓郵報》對于美國本土的一些關(guān)于社會存在的熱度高的問題的報道,都是通過地圖可視化的方式把想要呈現(xiàn)出來的數(shù)據(jù)表達出來??梢暬夹g(shù)在大數(shù)據(jù)時代得到了快速的發(fā)展和更為廣泛的應(yīng)用,其最大的優(yōu)勢、突出的地方是簡單快捷,可視化的效果與數(shù)據(jù)本身的相關(guān)性和聯(lián)系并不是很強,僅僅是為了視覺的客觀和便利,但對數(shù)據(jù)進行可視化,也能夠較為清晰的表達出數(shù)據(jù)之間的聯(lián)系。相對于國外,由于近些年來我國科技的發(fā)展之快以及普及度高,網(wǎng)絡(luò)已經(jīng)成功融入生活,成為生活的一部分。因此,對于把握網(wǎng)絡(luò)的檢測和治理顯得尤為重要,在這方面的研究也存在頗多?,F(xiàn)在的主流平臺主要是微博、豆瓣、知乎等社交軟件,消息盤根錯節(jié),很容易被混淆黑白。其中,北京大學(xué)就在利用微博平臺,研發(fā)了微博可視化分析工具,其操作的結(jié)果可以將微博網(wǎng)友的的轉(zhuǎn)發(fā)和評論之間的層次關(guān)系以圖表的形式在頁面上展示出來。在這個可視化結(jié)果里面的每一個節(jié)點代表一條微博,連線代表轉(zhuǎn)發(fā)關(guān)系,節(jié)點越大其轉(zhuǎn)發(fā)次數(shù)越多,這種方式對于解釋像微博這樣復(fù)雜數(shù)據(jù)關(guān)系十分不錯[3]。1.2.2發(fā)展趨勢目前,網(wǎng)絡(luò)不斷發(fā)展起來,很多社交軟件、媒體隨之興起,它們的便捷性、匿名性、即時性,加上網(wǎng)民的參與度變高、不理性的引導(dǎo)、快速的傳播等問題使得整個網(wǎng)絡(luò)環(huán)境變得更為復(fù)雜。因此,對于網(wǎng)絡(luò)熱點的管理和檢測是會一直發(fā)展下去的,但傳統(tǒng)的人工方式一定會被淘汰、被機器所代替,因為數(shù)據(jù)龐大靠人力顯得尤為困難。所以,監(jiān)測軟件的出現(xiàn)和增多是必然趨勢,這將成為企業(yè)的新突破口,新產(chǎn)品也將隨之不斷展現(xiàn)出來。再加上網(wǎng)絡(luò)環(huán)境的長期引導(dǎo)都需要利用監(jiān)測來分析和解決的,加強對于網(wǎng)絡(luò)熱點的觀察,把握和預(yù)測輿論的走向,了解和分析網(wǎng)民對于一些問題或者生活上的真實的要求已經(jīng)成為一種必然的趨勢。1.3研究的主要內(nèi)容本設(shè)計主要是在python語言的環(huán)境和基礎(chǔ)下,通過對微博、百度等網(wǎng)站的網(wǎng)頁進行搜集數(shù)據(jù),來對抓取的數(shù)據(jù)進行分析,從而能夠迅速把握當(dāng)前的網(wǎng)絡(luò)狀況,了解人們目前所感興趣的方向,并快速地對現(xiàn)狀作出判斷。首先,對于網(wǎng)絡(luò)輿論問題,通過對主流的社交軟件的熱點的數(shù)據(jù)分析和可視化進行了技術(shù)分析,其中含有數(shù)據(jù)的采集、數(shù)據(jù)的處理、實時性的數(shù)據(jù)以及可視化的效果等技術(shù)要求。其次,根據(jù)我們要解決的問題進行相對應(yīng)的需求分析,并且設(shè)計了整體的框架,對于scrapy爬蟲、bootstrap+query前端、flask后端以及數(shù)據(jù)庫的框架結(jié)構(gòu)進行了詳細的描述。最后,結(jié)合需求和設(shè)計的架構(gòu),對整個設(shè)計進行實現(xiàn),對數(shù)據(jù)處理的回歸分析、高頻詞的統(tǒng)計、熱度分析等代碼的詳細描述。同時,把設(shè)計中的主要模塊進行截圖展示。把實時數(shù)據(jù),同采集的數(shù)據(jù)經(jīng)過分析所得到的結(jié)果進行一個比較,能夠保證關(guān)于網(wǎng)絡(luò)熱點的數(shù)據(jù)分析的正確性和有效性。設(shè)計基于python實現(xiàn)對網(wǎng)絡(luò)熱點的觀察和分析,相對于傳統(tǒng)信息搜集方式,利用現(xiàn)代技術(shù)自動化抓取數(shù)據(jù),圖表展示數(shù)據(jù)以及實時數(shù)據(jù)的展現(xiàn),操作更加省事實力,能夠更直觀的知道人們對于事件的關(guān)注偏向方向并即時作出調(diào)整。同時,也表現(xiàn)出現(xiàn)代科技在網(wǎng)絡(luò)熱點方面的成效,也為之后類似的分析提供技術(shù)性的參照。1.4論文的結(jié)構(gòu)本文分為六章,對于網(wǎng)絡(luò)熱點的數(shù)據(jù)分析和可視化的背景、國內(nèi)外現(xiàn)狀及趨勢、開發(fā)技術(shù)和環(huán)境、功能需求、架構(gòu)設(shè)計以及功能模塊進行介紹。以下是本文的整體結(jié)構(gòu):第一章:緒論。首先,以設(shè)計目的為主,對當(dāng)下開發(fā)背景進行描述。然后,對于國內(nèi)外的現(xiàn)狀和未來發(fā)展趨勢進行闡述。最后,對整個設(shè)計內(nèi)容以及論文的結(jié)構(gòu)進行敘述。第二章:開發(fā)環(huán)境和技術(shù)。根據(jù)設(shè)計需要運用到的環(huán)境和技術(shù),進行詳細介紹和總結(jié)。第三章:系統(tǒng)設(shè)計。先對爬蟲模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)可視化模塊進行需求分析,然后進行架構(gòu)的設(shè)計。其中爬蟲模塊主要利用scrapy框架;數(shù)據(jù)分析模塊通過熱度分析、詞頻統(tǒng)計、回歸分析以及實時數(shù)據(jù)的對比進行分析;數(shù)據(jù)可視化模塊利用前端和后端分離,進行圖表的展示。第四章:系統(tǒng)功能模塊實現(xiàn)。整個設(shè)計主要模塊具體實現(xiàn)的細節(jié),對數(shù)據(jù)結(jié)果進行詳細的分析以及最后效果的展示。第五章:結(jié)論與展望。對整個設(shè)計的實現(xiàn)進行總結(jié),對結(jié)果進行評價以及在整個實現(xiàn)過程中所遇到的困難、不足進行總結(jié),并對這個設(shè)計的未來可進行修改和完善的地方進行展望。第二章開發(fā)環(huán)境與技術(shù)2.1開發(fā)環(huán)境本設(shè)計主要針對微博、百度、知乎熱榜進行數(shù)據(jù)采集,通過網(wǎng)頁爬蟲抓取數(shù)據(jù),對熱點進行分析。具體的開發(fā)環(huán)境如下:1.系統(tǒng)環(huán)境:Windows10系統(tǒng);2.開發(fā)語言:Python3.8,實現(xiàn)爬取數(shù)據(jù)、數(shù)據(jù)分析以及web框架的搭建;3.開發(fā)平臺:Pycharm;4.數(shù)據(jù)庫:Mysql,用來存儲微博、百度、知乎熱榜的數(shù)據(jù)和實時數(shù)據(jù);5.前端開發(fā):Jquery、Bootstrap、Javascript,用來開發(fā)和美化網(wǎng)頁;6.Web框架:Flask框架、Echarts,實現(xiàn)數(shù)據(jù)可視化;2.2網(wǎng)絡(luò)熱點數(shù)據(jù)采集2.2.1網(wǎng)絡(luò)爬蟲原理抓取、搜尋數(shù)據(jù)主要是通過網(wǎng)絡(luò)爬蟲來完成的。使用爬蟲是為了把我們想獲取的頁面所在的網(wǎng)頁放到自己電腦上,從而作為備份。爬蟲的過程主要分為以下幾步步驟:1.設(shè)置一個URL作為剛開始的URL。可以自己選中一個URL設(shè)為起始,也可以將自己想要爬取的網(wǎng)頁設(shè)為最初的URL。2.新的URL可以根據(jù)剛開始設(shè)定的URL,通過這個URL對網(wǎng)頁進行爬取來獲得新的URL。3.在之前構(gòu)建的URL列表中放入剛剛獲取的新的URL。4.從用來存儲URL的URL列表中拿出剛剛獲取到的新的URL,并通過新的URL來對網(wǎng)頁再一次進行信息的爬取,然后再將獲取到的最新的URL從最新的網(wǎng)頁中取出來,對以上所有的過程進行反復(fù)的操作。5.當(dāng)設(shè)置的程序的停止條件在爬蟲運行時,滿足設(shè)計的需求時,程序就會停止。在爬蟲程序的編寫過程中,一般會在程序里面設(shè)置一個條件來讓程序停止運行。如果沒有設(shè)置一個讓爬蟲停下來的條件,程序?qū)恢边\行下去,一直到?jīng)]有新的URL出現(xiàn)才會就此停下;相反,程序不再爬取信息當(dāng)停止條件滿足時。2.2.2scrapy框架結(jié)構(gòu)Scrapy框架是用來對爬取需要的網(wǎng)站的數(shù)據(jù)信息的框架,在實際生活中得到廣泛的應(yīng)用。用戶開發(fā)程序的時候使用框架,只需要利用框架下的幾種模塊就可以快速且便利地實現(xiàn)一個爬蟲甚至多個爬蟲的同時使用。以下是框架的組成部分:1.Spiders(爬蟲器):處理從網(wǎng)頁上傳遞回來的請求,然后取出我們想要的數(shù)據(jù)從獲得到的結(jié)果中,從而獲取到所需要的數(shù)據(jù)的Item,并且把還繼續(xù)需要的URL輸送到引擎,然后再一次到調(diào)度器的里面。2.Engine(引擎):它是框架的最關(guān)鍵的部分,主要負責(zé)爬蟲、管道、下載器、調(diào)度器之間的相互通信,對相關(guān)信息的信號、數(shù)據(jù)等進行傳送。3.Scheduler(調(diào)度器):它的功能把從引擎那邊傳輸過來的請求接受下來,并依據(jù)規(guī)定的方式、行為對它處理。并且當(dāng)引擎再一次提出需要時,再次把這些內(nèi)容送給引擎[4]。4.Downloader(下載器):它的功能是把引擎那邊送過來的所有的相關(guān)請求下載下來,并將從中獲取到的回應(yīng)再傳輸給引擎,由爬蟲從引擎那里獲取再繼續(xù)進行處理。5.ItemPipeline(管道):它的功能是負責(zé)處理從爬蟲那里獲得的Item,然后對它們進行詳細分析、過濾、存儲等后面將它們做出處理的地方。6.DownloaderMiddlewares(下載中間件):是一個位于爬蟲、引擎和下載器中間的一種中間件,主要作用是為了用來處理這三者之間的請求及響應(yīng)。7.SpiderMiddlewares(爬蟲中間件):是一個用來的進行信息的傳遞的組件,但是是可以通過可以通過自己進行擴展、操作引擎和爬蟲中間件的。它是一種處于爬蟲引擎和爬蟲中間的一種中間件,主要作用是用來處理爬蟲對于輸入的響應(yīng)和輸出的請求。8.SchedulerMiddlewares(調(diào)度中間件):是處于爬蟲引擎和調(diào)度中間的一種中間件,它的主要作用是為了能夠從爬蟲引擎到調(diào)度之間能夠發(fā)送請求和響應(yīng)。圖2-1scrapy框架架構(gòu)2.2.3網(wǎng)絡(luò)爬蟲技術(shù)1.XPath解析XPath,即XMLPathLanguage,它是一種用來搜尋信息的語言。剛開始的時候是被用作尋找XML文檔,但是之后又發(fā)現(xiàn)同樣適合運用在對HTML文檔的搜索。因此在編寫爬蟲程序時,也可以做對想要提取的信息的采集通過XPath這樣的方法。XPath有個功能也很突出是關(guān)于選擇方面的,十分全面且厲害,它提供了一種路徑選擇表達的方式,極其簡明通透。此外,它還提供了超過100個的內(nèi)建函數(shù),主要用于處理字符串、數(shù)值、時間、日期等,用來進行比較遍歷,近似于可以確定所有想要信息所位于的節(jié)。所以,它是一種特別便捷的語言。但是在網(wǎng)絡(luò)爬蟲中,我們只需要利用XPath這種方法來對數(shù)據(jù)進行搜集。2.正則表達式正則表達式,是一種邏輯公式,也被成為規(guī)則表達式或者正則集合,是通過對字符串(包括普通字符(例如從26個單個字母)和特殊字符(被稱為“元字符”))來進行操作的[5]??偠灾?,就是很早之前就按照某種規(guī)則規(guī)定好的一些特定字符以及各種利用這些特定字符進行不斷的重組和排列,組成一個“規(guī)則字符串”。正則表達式也是一種文本模式,它在對搜索文本進行表示時,可以進行一個或多個字符串的配對。通過十分簡潔明了的正則表達式,就能夠特別快速的對一個很復(fù)雜的需求進行處理和實現(xiàn)。3.BeautifulSoup解析BeautifulSoup它的最重要的功能是進行數(shù)據(jù)的抓取,從想要獲取的頁面上。BeautifulSoup還有一個功能是可以用來解決關(guān)于引航、搜尋、修改分析樹等問題,根據(jù)它所提供的一些函數(shù)來進行處理??傊且粋€十分便利的方法,通過解析文檔的方式給用戶提供所需要進行抓取的數(shù)據(jù)[6],只需要非常少的行數(shù)的代碼就可以用來進行搜集數(shù)據(jù),可供使用者靈活地運用不同的方法進行解析,并提供速度的有效。它的操作步驟如下:(1)先實現(xiàn)一個實例化,對一個BeautifulSoup對象,然后在這個對象之中載入想要獲取到的頁面源碼數(shù)據(jù)。(2)通過對BeautifulSoup對象中與之有關(guān)的特性或者方法進行調(diào)用,來實現(xiàn)對標簽位置的定位和數(shù)據(jù)的提取。2.2.4數(shù)據(jù)庫MySQL是眾多數(shù)據(jù)庫中的一種,是關(guān)系型的。關(guān)系型這樣的數(shù)據(jù)庫會使用不同的表分別把使用的數(shù)據(jù)保存到這些的表的當(dāng)中。而被存儲在這樣的一個大倉庫內(nèi)的所有數(shù)據(jù),就是通過這樣的方式加快了對數(shù)據(jù)操作的速度,同時操作上也更加的靈活。其中,PyMySQL是Python3.x版本中的一個庫,是Python與MySQL進行連接的一個方法。2.3數(shù)據(jù)分析數(shù)據(jù)分析是指對通過極其非常龐大的數(shù)據(jù),利用比較恰當(dāng)?shù)暮线m的統(tǒng)計學(xué)上的分析方法對它進行分析,使數(shù)據(jù)能夠發(fā)揮出它的最大的作用,體現(xiàn)出它本身所存在的價值。簡而言之,數(shù)據(jù)分析就是把數(shù)據(jù)中所包含的有用的、有價值的、所需要的信息提取出來,然后通過一些分析方法形成關(guān)于一些問題的結(jié)論的一個過程。在現(xiàn)實生活的實際應(yīng)用中,通過數(shù)據(jù)分析可以幫助人們輕易做出判斷,再進行下一步。2.3.1數(shù)據(jù)清洗數(shù)據(jù)清洗,是指利用數(shù)據(jù)的檢測,從而找到一些顯而易見的錯誤,是我們可以很容易從數(shù)據(jù)中找出來的。它主要包括檢查數(shù)據(jù)的一致性,處理無效的數(shù)據(jù)和一些不完整的數(shù)據(jù)等,然后再對這些數(shù)據(jù)進行處理和改正,保證它們的正確性。由于將某個主題的數(shù)據(jù)的集合起來然后放進數(shù)據(jù)倉庫進行存儲,之后又把位于其他各種系統(tǒng)中的這些數(shù)據(jù)提取出來的,并且還將以往的數(shù)據(jù)包含在里面,這樣就導(dǎo)致了有的數(shù)據(jù)產(chǎn)生了錯誤、有的數(shù)據(jù)與其他不同的數(shù)據(jù)之間產(chǎn)生了矛盾,這些問題是不可避免且存在的。并這些錯誤的或有相抵觸的數(shù)據(jù)也是在處理過程中必須處理或者清除的,被成為“臟數(shù)據(jù)”。這就要依據(jù)特定的方法把“臟數(shù)據(jù)”去除。數(shù)據(jù)清洗可利用的方法有一致性檢查、無效值和缺失值的處理、重復(fù)記錄的檢測、錯誤值檢測等。2.3.2文本分析1.詞云詞云是對采集的數(shù)據(jù)種的文本信息進行數(shù)據(jù)分析的一種方法,就是通過對文本進行分詞劃分,然后生成與關(guān)鍵詞有關(guān)的詞云或者統(tǒng)計這些被劃分出來的關(guān)鍵詞所出現(xiàn)的次數(shù),然后篩選出文本劃分出來次數(shù)較多的關(guān)鍵詞。詞云展示那些頻率很高的關(guān)鍵詞,從而去掉其他沒有其他用途的文本信息,使使用者能夠直接通過視覺了解到這類信息的著重點和突出的地方,迅速明白信息所要表達的內(nèi)容。使用詞云分析的步驟如下:(1)確定想要表達的主題。思考希望表現(xiàn)得主題和內(nèi)容,方便使用者看到重點。(2)收集數(shù)據(jù)。對所要進行分析的內(nèi)容去獲取相關(guān)的數(shù)據(jù)。(3)文本分詞。運用python底下的jieba這個包,對進行文本的劃分,將提取關(guān)鍵詞并統(tǒng)計其出現(xiàn)的頻率。2.高頻詞分析高頻詞分析就是讀取抓取并保存的文本信息,對其進行分詞,統(tǒng)計關(guān)鍵詞的出現(xiàn)次數(shù),將關(guān)鍵詞以及它所對應(yīng)的次數(shù)保存下來。之后再次讀取數(shù)據(jù),提取頻率出現(xiàn)較高的數(shù)據(jù),通過圖表和數(shù)據(jù)的展示,讓人更能清晰的了解到信息的偏向方面以及所聚焦的方面。2.3.3熱度分析熱度分析,主要是分析所得的數(shù)據(jù)的熱度與排名的關(guān)系。利用直方圖、折線圖、散點圖、熱力圖來展現(xiàn)出熱度與排名所呈現(xiàn)出來的關(guān)系。讓人更能透徹的知曉這兩者之間的聯(lián)系,以及所呈現(xiàn)出來的趨勢變化和速率變化。2.3.4回歸分析回歸分析,指的是指的是一種統(tǒng)計分析方法,用來確定兩種或兩種以上變量間彼此相互依存的定量關(guān)系。在大數(shù)據(jù)分析應(yīng)用中,它是用于對因變量(目標)和自變量(預(yù)測器)之間的關(guān)系進行研究。這種技術(shù)通常常被用來進行預(yù)測、構(gòu)建時間序列模型以及發(fā)現(xiàn)變量之間所存在的因果關(guān)系。1.一元線性回歸一元線性回歸分析,指的是只含有一個自變量的線性相關(guān)的關(guān)系的方法。因此,利用一元線性回歸分析的方法來進行預(yù)測,是通過自變量和因變量之間所存在的聯(lián)系,來建立線性回歸方程的,從而進再進行預(yù)測。一元線性回歸分析法的預(yù)測模型為:2.多項式回歸多項式回歸,是指回歸函數(shù)是由多個變量組成的回歸式子。由于,當(dāng)多項式的次數(shù)趨向于無窮大時,可以逼近任何一種函數(shù),借此推算出一種無限逼近的公式來進行預(yù)測,誤差也有些許減少。因此,多項式回歸有著廣泛應(yīng)用[11]。多元回歸分析法的模型為:3.最小二乘法最小二乘法,是一種在誤差估計、不確定度、系統(tǒng)辨識及預(yù)測、預(yù)報等數(shù)據(jù)處理諸多學(xué)科領(lǐng)域得到廣泛應(yīng)用的數(shù)學(xué)工具[7]。它又稱最小平方法,是一種通過數(shù)學(xué)來進行優(yōu)化的技術(shù)。它是通過最小化誤差的平方和尋找與數(shù)據(jù)的最符合的函數(shù)進行配對。利用最小二乘法可以非常快的計算出并得到未知的數(shù)據(jù),并使這些得到的數(shù)據(jù)與實際數(shù)據(jù)之間誤差的平方和達到最小[7][8-9]。最小二乘法在曲線的擬合上還可以被進行使用,此外也可通過將能量趨向于最小,或著將熵趨向于最大,以此來解決其他一些需要優(yōu)化的問題,最后用最小二乘法進行處理[10]2.4數(shù)據(jù)可視化隨著可視化技術(shù)的不斷更新和發(fā)展、在生活應(yīng)用方面軟件的增加、各種展示表現(xiàn)的形式的層出不窮以及添加了可修改的動態(tài)效果、可以進行交互使用等功能,數(shù)據(jù)可視化的應(yīng)用不斷擴大,像所有剛出來的比較新的概念一樣,引起了許多人的興趣和投入。在以前的應(yīng)用中,經(jīng)常運用到直方圖、散點圖、柱狀圖等,都是最基礎(chǔ)且普通的統(tǒng)計圖表,被應(yīng)用了許多年,現(xiàn)在依舊在使用途中。數(shù)據(jù)可視化在實際生活中的應(yīng)用,它的多態(tài)性和豐富的表現(xiàn)方式吸引了許多人并投入使用。不管是動態(tài)的還是靜態(tài)的圖形顯示,都給予我們一種嶄新的方式,讓我們能夠發(fā)現(xiàn)不同事物之間各式各樣的聯(lián)系,感受每一時刻我們周圍所環(huán)繞的信息,并通過使用便捷的數(shù)據(jù)圖表展示出數(shù)據(jù)背后所隱藏的信息。2.4.1Echarts技術(shù)ECharts,是一個開源的有關(guān)數(shù)據(jù)可視化的庫,可以極其順暢流利地運行,實現(xiàn)動態(tài)展示和操作,并且兼容在目前市面上能見到的多數(shù)瀏覽器上。ECharts底層是利用了輕量級的矢量圖形庫ZRender,能夠提供更加簡潔的界面、多態(tài)的交互以及可以自己根據(jù)自己的需求設(shè)計的可視化的圖表。ECharts目前所包含了基本會用到的折線圖、柱狀圖、散點圖、餅圖這樣的基礎(chǔ)圖表,在統(tǒng)計上很形象簡約的盒形圖,針對于地理數(shù)據(jù)可視化的地圖、熱力圖、線圖,對關(guān)系型數(shù)據(jù)進行可視化的關(guān)系圖、旭日圖等,并且它支持各種圖表之間的混合搭配。它還可以動態(tài)可拖曳圖表上的組件,滿足了用戶對動態(tài)切換數(shù)據(jù)的需求,實現(xiàn)對數(shù)據(jù)區(qū)域縮放、多圖的聯(lián)動、浮標等,能夠更貼切的進行數(shù)據(jù)分析,展現(xiàn)大數(shù)據(jù)所存在的魅力,能夠更大的放大創(chuàng)新能力,利用構(gòu)思出的最優(yōu)的組合方式表達數(shù)據(jù)之間的關(guān)聯(lián)。2.4.2Flask技術(shù)Flask是利用Python開發(fā)的Web微型應(yīng)用框架,具有輕量且易于操作、擴展性強等特點。因此,利用Flask框架可以使Web應(yīng)用的搭建變得更加便捷,并能快速的完成一個項目的開發(fā)。在開發(fā)一個項目時,會需要前端和后端,前端用來對界面進行構(gòu)造和美化,后端就是根據(jù)前端的需求,調(diào)用所需要的數(shù)據(jù),再傳遞給前端展現(xiàn),而Flask就可以分為前端和后端兩部分。1.前端前端部分的設(shè)計是通過把jQuery框架和Bootstrap框架結(jié)合起來使用,從而來實現(xiàn)對整個界面和數(shù)據(jù)的展現(xiàn)。(1)jQuery,是一個很方便、很有效的JavaScript框架。目的是為了提出并引導(dǎo)將代碼量減少,卻可以做到無法想象多的事情。它的最內(nèi)核的極其特別的屬性大概可以概述為:用有獨一無二的鏈式語法和小而精悍且清晰的多功能接口;擁有效率極高且靈活的css選擇器,并且對CSS選擇器進行延伸和擴展等操作。(2)Bootstrap框架,是在HTML、CSS、JavaScript基礎(chǔ)上所開發(fā)的簡潔、清楚、強大的前端框架,這讓W(xué)eb的開發(fā)更加快速便捷。Bootstrap還為使用者們提供了可觀、可欣賞的HTML和CSS規(guī)范。Bootstrap出世之后受到大家的支持和使用,這也使它成為了很受歡迎的開源項目。目前,在國內(nèi)的大部分公司里正在使用的框架,也是在Bootstrap的基礎(chǔ)上對它進行性能的優(yōu)化而推出的。2.后端后端部分是利用Flask自帶的app模塊,在收到前端傳遞過來的數(shù)據(jù)請求,利用Python下的SQLAlchemy包或者連接MySQL數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)的增刪改查,并通過NumPy、pandas、Scikit-learn等庫對數(shù)據(jù)進行處理和計算,然后將結(jié)果整合成恰當(dāng)?shù)膉son數(shù)據(jù)的格式通過路由映射到前端,以此來供前端程序調(diào)用和展示。第三章系統(tǒng)設(shè)計3.1系統(tǒng)的需求分析整個設(shè)計主要分為爬蟲模塊、數(shù)據(jù)分析模塊、數(shù)據(jù)可視化模塊三個主要部分,下面是對于各個功能模塊的需求分析:3.1.1爬蟲模塊爬蟲模塊的功能是搜集所需要的網(wǎng)絡(luò)熱點數(shù)據(jù),將其采集下來,主要是對微博、百度、知乎熱榜數(shù)據(jù)的采集。采集的數(shù)據(jù)包括熱榜的排名、內(nèi)容和相關(guān)的搜索人數(shù)。在獲取完數(shù)據(jù)之后,將數(shù)據(jù)存儲到MySql中,方便之后的使用。3.1.2數(shù)據(jù)分析模塊數(shù)據(jù)分析模塊的功能是對已經(jīng)保存在數(shù)據(jù)庫中的數(shù)據(jù)進行觀察、篩選和分析,主要分為數(shù)據(jù)清洗和數(shù)據(jù)分析這兩個部分。數(shù)據(jù)清洗在此設(shè)計中的需求就是對數(shù)據(jù)的缺失值不全和刪除錯誤的數(shù)據(jù)。數(shù)據(jù)分析是對獲取到的數(shù)據(jù)通過熱度與排名的關(guān)系來觀察趨勢,對數(shù)據(jù)中的內(nèi)容進行分詞、提取關(guān)鍵詞來進行分析,分析網(wǎng)絡(luò)關(guān)注最多的事情。此外,還可以利用文本特征來進行詞云分析、高頻主題詞的統(tǒng)計,預(yù)測出未來關(guān)注走向。3.1.3數(shù)據(jù)可視化模塊數(shù)據(jù)可視化模塊是對數(shù)據(jù)進行可視化,并通過web展示出來。將數(shù)據(jù)利用數(shù)據(jù)分析得出想要的類型,再調(diào)用Echarts通過圖表的方式展示出來,更清晰明了。Web是利用Bootstrap+Jquery前端框架和Flask后端框架進行搭建的,實現(xiàn)數(shù)據(jù)可視化、前后端數(shù)據(jù)交互以及聯(lián)合數(shù)據(jù)庫進行實時數(shù)據(jù)的更新。3.2系統(tǒng)的框架設(shè)計爬蟲模塊主要還是利用Scrapy框架,以xpath解析的方法對所需要爬取的網(wǎng)頁進行順序爬取,一個個遍歷和比較相關(guān)數(shù)據(jù)的網(wǎng)頁節(jié)點,分別構(gòu)造出微博爬蟲、百度爬蟲、知乎爬蟲。這三個爬蟲都是爬取這三個網(wǎng)頁的熱榜,包括熱榜的數(shù)據(jù)的排名名次、內(nèi)容和搜索人數(shù),也就是熱度。數(shù)據(jù)清洗模塊主要是用pandas里面的函數(shù)來處理缺失值和重復(fù)值。數(shù)據(jù)分析模塊通過采集到的數(shù)據(jù)的熱度與排名進行多樣分析,提取熱榜內(nèi)容數(shù)據(jù),從關(guān)鍵詞、熱度等進行數(shù)據(jù)分析。數(shù)據(jù)可視化模塊通過Echarts使分析結(jié)果以圖表的形式在web上展現(xiàn)出來,更清晰明了,能夠更好的分析數(shù)據(jù)的特征以及未來發(fā)展趨勢。圖3-1設(shè)計結(jié)構(gòu)圖3.3爬蟲模塊設(shè)計3.3.1Scrapy框架設(shè)計Scrapy框架本設(shè)計只用了Spider、ItemPipeline、settings部分。Spider部分有微博、百度、知乎爬蟲的設(shè)計,主要是利用xpath的方法通過遍歷和比較來獲取這些網(wǎng)站熱榜的數(shù)據(jù)。圖3-2為微博爬蟲爬取數(shù)據(jù)獲取流程。圖3-2scrapy爬蟲爬取數(shù)據(jù)流程圖爬蟲部分,首先是要設(shè)置所要請求網(wǎng)頁的url,運行爬蟲程序,對目標網(wǎng)頁發(fā)送一個請求,是模仿瀏覽器這樣的一個操作。在程序獲取到目標網(wǎng)頁傳遞過來的網(wǎng)頁源代碼的時候,請求數(shù)據(jù)的功能就完成。然后,通過xpath方法,找到所要獲取頁面的大的框架的節(jié)點,然后再找到排名、內(nèi)容、熱度的網(wǎng)頁節(jié)點,在進行程序的編寫。ItemPipeline部分是根據(jù)爬蟲所爬取到的被收集起來的對象,對這些對象進行處理。當(dāng)程序運行起來時,匹配name字段是符合關(guān)于微博的爬蟲,還是關(guān)于百度爬蟲,還是關(guān)于知乎的爬蟲。然后編寫連接MySQL的程序,將爬取到的數(shù)據(jù)存儲到數(shù)據(jù)中。Settings部分是設(shè)置管道和需要跟mysql連接的一些內(nèi)容的放置,然后將爬取的數(shù)據(jù)存儲到mysql中。3.3.2實時數(shù)據(jù)爬蟲實時數(shù)據(jù)的爬蟲主要是用xpath和正則表達式對數(shù)據(jù)進行抓取。圖3-3實時數(shù)據(jù)爬蟲流程圖首先,是要將所需要請求的網(wǎng)頁的url運用到程序之中,然后對目標網(wǎng)頁所存在的服務(wù)器發(fā)送一個請求。在程序獲取到目標網(wǎng)頁傳遞過來的網(wǎng)頁源代碼的時候,請求數(shù)據(jù)的功能就完成。然后打印出請求url的返回狀態(tài),如果成功,那就證明請求沒有問題,繼續(xù)下一步操作。利用bs4方法對所要獲取的網(wǎng)頁進行分析,找到所要獲取頁面的大的框架的節(jié)點,然后再找到排名、內(nèi)容、熱度的網(wǎng)頁節(jié)點,在進行程序的編寫。因為是實時數(shù)據(jù)的抓取,所以再運用time包,增加一個時間戳,用來表示抓取數(shù)據(jù)的時間。之后再連接數(shù)據(jù)庫,設(shè)置數(shù)據(jù)庫所需要的一些配置的內(nèi)容,將獲取到的數(shù)據(jù)插入到數(shù)據(jù)庫中,最后關(guān)閉數(shù)據(jù)庫。又因為,網(wǎng)頁的熱榜信息是一分鐘更新一次,所以在此設(shè)置了定時任務(wù),爬取程序?qū)⒁环昼娺\行一次,由于網(wǎng)頁存在反爬蟲,所以為了防止被禁止這個問題,又設(shè)置了時間防止被禁。3.4數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫主要存儲的是微博、百度、知乎熱榜的數(shù)據(jù)以及實時數(shù)據(jù)。所采集的數(shù)據(jù)主要有以上四部分組成,主要包括熱榜的排名、內(nèi)容和搜索人數(shù)。數(shù)據(jù)庫采用的是MySQL,分別設(shè)計成四個獨立的數(shù)據(jù)表,用來存儲以上數(shù)據(jù)。3.4.1本地MySQL8.0Scrapy爬取的數(shù)據(jù)存儲到Mysql中。表3-1本地MySQL表(weibo)字段名稱數(shù)據(jù)類型主鍵允許空值說明rankvarcharYY排名contentvarcharNY內(nèi)容hotvarcharNY熱度3.4.2騰訊云服務(wù)器實時數(shù)據(jù)的存儲利用的是騰訊云服務(wù)器的數(shù)據(jù)庫,也是基于MySQL??紤]到實時數(shù)據(jù)每隔一分鐘采集一詞,本地運行可能會造成卡頓、崩潰或死機。因此,將數(shù)據(jù)儲存在云數(shù)據(jù)庫中。這里也分為三個表,分別對應(yīng)的微博、百度、知乎,采取的是熱榜的排名、內(nèi)容和熱度。表3-2騰訊云服務(wù)器表(current_weibo)字段名稱數(shù)據(jù)類型主鍵允許空值說明rankvarcharYY排名hotvarcharNY內(nèi)容contentvarcharNY熱度current_timedatetimeNN抓取時間第四章系統(tǒng)功能模塊實現(xiàn)4.1爬蟲模塊爬蟲模塊的主要功能就是對需要采集的數(shù)據(jù)進行采集。本設(shè)計主要是對熱門社交軟件的熱榜的爬取和它們的實時數(shù)據(jù)的爬取,這里采用了scrapy框架對它們數(shù)據(jù)的采集以及xpath方法和正則表達式對網(wǎng)頁內(nèi)容進行解析,根據(jù)不同頁面的復(fù)雜程度和需求,選擇適合它們的方法來使用。4.1.1scrapy模塊Scrapy框架可以同時運行它的框架下的多個爬蟲,這個方法十分簡潔快捷。多個爬蟲偽代碼如下:classbaiduSpider(scrapy.Spider):name="baidu"allowed_domains=['']start_urls=['/buzz?b=1&c=513&fr=topbuzz_b341_c513']defparse(self,response,**kwargs):item=BaiduItem()main_list=response.xpath('//div[@class="main"]')print(main_list)formaininmain_list:item['rank']=response.xpath('.//td[@class="first"]/span/text()').extract_first()item['content']=response.xpath('.//td[@class="keyword"]/a/text()').extract_first()item['hot']=response.xpath('.//td[@class="last"]/span/text()').extract_first()yielditem//使用xpath來解析網(wǎng)頁代碼Item部分代碼如下:classWeiboItem(scrapy.Item):rank=scrapy.Field()content=scrapy.Field()hot=scrapy.Field()passSettings偽代碼如下:USER_AGENT='Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108Safari/537.36'ROBOTSTXT_OBEY=FalseITEM_PIPELINES={'data.pipelines.dataPipeline':300,}圖4-1scrapy爬蟲數(shù)據(jù)獲取情況4.1.2實時數(shù)據(jù)模塊實時數(shù)據(jù)主要是抓取實時更新的數(shù)據(jù),由于頁面信息每一分鐘更新一次,所以設(shè)置的爬蟲也將每一分鐘爬取一次。部分代碼如下:defmain():db=pymysql.connect(host='',port=22639,user='aaa76857',passwd='yiwang1029.',db='data',charset='utf8')cursor=db.cursor()#取游標sql="insertintocurrent_weiboVALUES('%s','%s','%s','%s')"http://連接數(shù)據(jù)庫r=requests.get(url='/top/summary?Refer=top_hot&topnav=1&wvr=6',timeout=10)print(r.status_code)#獲取返回狀態(tài)r.encoding=r.apparent_encodingdemo=r.textsoup=BeautifulSoup(demo,"lxml")t=1result=[]time_stamp=time.strftime('%Y/%m/%d%H:%M',time.localtime(time.time()))#時間戳foriteminsoup.find_all('tr',class_=''):try:#去掉第一條信息if(t==1):t=0continue#print(link('td'))rank=item.select("td")[0]#熱搜排名content=item.select("td")[1].select("a")[0]hot=item.select("td")[1].select("span")[0]result.append([rank.string,content.string,hot.string,time_stamp])exceptIndexError:passforiteminresult:rank=str(item[0])content=str(item[1])hot=str(item[2])current_time=str(item[3])print(rank,content,hot,current_time)cursor.execute(sql%(rank,content,hot,current_time))//插入數(shù)據(jù)mit()cursor.close()db.close()main()schedule.every(1).minutes.do(main)#檢查部署的情況,如果任務(wù)準備就緒,就開始執(zhí)行任務(wù)whileTrue:time.sleep(2)schedule.run_pending()圖4-2實時數(shù)據(jù)獲取情況4.2數(shù)據(jù)庫模塊本設(shè)計采用的是MySQL數(shù)據(jù)庫,存儲爬取的微博、百度、知乎的熱榜的數(shù)據(jù)以及實時更新數(shù)據(jù)。本設(shè)計使用的是NavicatPreminum15可視化工具來給數(shù)據(jù)庫建立表,可以在它的界面上直接操作連接數(shù)據(jù)庫并建表。Scrapy主要是通過通道來與數(shù)據(jù)庫連接,Scrapy與MySQL互連存儲數(shù)據(jù)部分代碼如下:classdataPipeline(object):weibo_name='weibo'baidu_name='baidu'zhihu_name='zhihu'weiboInsert="insertintoweibo(rank,content,hot)values('{rank}','{content}','{hot}')"baiduInsert="insertintobaidu(rank,content,hot)values('{rank}','{content}','{hot}')"zhihuInsert="insertintozhihu(rank,content,hot)values('{rank}','{content}','{hot}')"definit(self,settings):self.settings=settings#pipeline默認調(diào)用defprocess_item(self,item,spider):print(item)if=="weibo":sqltext=self.weiboInsert.format(rank=pymysql.escape_string(item['rank']),content=pymysql.escape_string(item['content']),hot=pymysql.escape_string(item['hot']))#spider.log(sqltext)self.cursor.execute(sqltext)elif=="baidu":sqltext=self.baiduInsert.format(rank=pymysql.escape_string(item['rank']),content=pymysql.escape_string(item['content']),hot=pymysql.escape_string(item['hot']))#spider.log(sqltext)self.cursor.execute(sqltext)elif=="zhihu":sqltext=self.zhihuInsert.format(rank=pymysql.escape_string(item['rank']),content=pymysql.escape_string(item['content']),hot=pymysql.escape_string(item['hot']))#spider.log(sqltext)self.cursor.execute(sqltext)else:spider.log('Undefinedname:%s'%)returnitem@classmethoddeffrom_crawler(cls,crawler):returncls(crawler.settings)defopen_spider(self,spider):#連接數(shù)據(jù)庫self.connect=pymysql.connect(host=self.settings.get('MYSQL_HOST'),port=self.settings.get('MYSQL_PORT'),db=self.settings.get('MYSQL_DBNAME'),user=self.settings.get('MYSQL_USER'),passwd=self.settings.get('MYSQL_PASSWD'),charset='utf8',use_unicode=True)#通過cursor執(zhí)行增刪查改self.cursor=self.connect.cursor()self.connect.autocommit(True)defclose_spider(self,spider):self.cursor.close()self.connect.close()實時數(shù)據(jù)存儲到MySQL的部分代碼如下:db=pymysql.connect(host='',port=22639,user='aaa76857',passwd='yiwang1029.',db='data',charset='utf8')cursor=db.cursor()#取游標sql="insertintocurrent_weiboVALUES('%s','%s','%s','%s')"http://這里連接到數(shù)據(jù)庫cursor.execute(sql%(rank,content,hot,current_time))//將數(shù)據(jù)插入數(shù)據(jù)庫中mit()cursor.close()db.close()//關(guān)閉連接,關(guān)閉數(shù)據(jù)庫4.3數(shù)據(jù)分析模塊4.3.1文本分析實現(xiàn)文本分析主要是對獲取到的數(shù)據(jù)中含有的文本的劃分以及關(guān)鍵詞的統(tǒng)計,本設(shè)計通過詞云和柱狀圖來展示它們之間的關(guān)系。詞云步驟:(1)文本內(nèi)容的收集。將所有文本單獨存儲起來。(2)文本分詞。按照一定規(guī)則對取的文本數(shù)據(jù)進行劃分,并統(tǒng)計它們出現(xiàn)的頻率。本設(shè)計用jieba包來進行分詞處理。(3)繪制詞云。導(dǎo)入wordcloud包,根據(jù)它的使用發(fā)放來進行生成。詞云部分代碼如下:all_words=cut_words(top_search)#定義停用詞stop=['的','你','了','將','為','例','','多','再','有','是','等','天','次']words_cut=[]forwordinall_words:ifwordnotinstop:words_cut.append(word)word_count=pd.Series(words_cut).value_counts()wc=WordCloud(font_path="C:\\Windows\\Fonts\\simhei.ttf",#設(shè)置字體background_color="white",#設(shè)置詞云背景顏色max_words=1000,#詞云允許最大詞匯數(shù)max_font_size=200,#最大字體大小random_state=50#配色方案的種數(shù))wc1=wc.fit_words(word_count)#生成詞云高頻關(guān)鍵詞統(tǒng)計部分代碼:url='/top/summary?Refer=top_hot&topnav=1&wvr=6'#獲取數(shù)據(jù)r=requests.get(url)r.raise_for_status()r.encoding=r.apparent_encodingsoup=BeautifulSoup(r.text,'html.parser')data=soup.find_all('a')d_list=[]foritemindata:d_list.append(item.text)words=d_list#中文分詞result=list(jieba.cut(words[0]))forwordinwords:result.extend(jieba.cut(word))redata=[]foritinresult:iflen(it)<=1:continueelse:redata.append(it)result_str=''.join(redata)key=list(set(redata))x,y=[],[]#篩選數(shù)據(jù)forstinkey:count=redata.count(st)ifcount<=1:continueelse:x.append(st)y.append(count)x.sort()y.sort()圖4-3文本分析圖表4.3.2熱度統(tǒng)計實現(xiàn)通過對抓取的數(shù)據(jù)的熱度和排名進行統(tǒng)計,來觀察它的趨勢走向。熱度分析主要用了散點圖、折線圖、柱狀圖和熱力圖。以下是散點圖、折線圖和柱狀圖的部分代碼:varmyChart=echarts.init(document.getElementById('bar'));option_bar={xAxis:{type:'category',data:[{%foriteminitems%}'{{item[0]}}',{%endfor%}]},yAxis:{type:'value'},series:[{type:'bar',data:[{%foriteminitems%}'{{item[2]}}',{%endfor%}]}],};color:['rgb(131,175,155)','rgb(252,157,154)','rgb(249,205,173)','rgb(200,200,169)',]myChart.setOption(option_bar)熱力圖運用的是seaborn包制作,以下是熱力圖的部分代碼:sns.jointplot(x='排名',y='熱度',data=df,kind='kde',cbar=True,color='r',shade=True)plt.title("熱力圖")plt.savefig('F://bishe//static//style//images//heatmap.png')plt.show()圖4-4熱度分析示例圖表4.3.3回歸分析實現(xiàn)這里運用了一元分析、二元分析、三元分析和最小二乘法,以下是多元回歸分析部分代碼:sns.regplot(x=df.排名,y=df.熱度,order=1)plt.savefig(fname="F://bishe//static//style//images//linear_weibo1.png",figsize=[10,10])plt.show()以下是最小二乘法回歸分析部分代碼:deffunc(p,x):a,b,c=preturna*(x**2)+(b*x)+cdef_func(p,x,y):returnfunc(p,x)-yp0=[2,3,4]P=leastsq(er_func,p0,args=(df.排名,df.熱度))a,b,c=P[0]x=np.linspace(0,55,100)y=a*(x**2)+(b*x)+cplt.plot(x,y,color=[0,0,0.8,0.4],label=u"擬合直線",linewidth=2)plt.scatter(x,y,color="c",label=u"擬合數(shù)據(jù)",linewidth=2)plt.legend()圖4-5回歸分析示例圖表4.3.4實時數(shù)據(jù)實現(xiàn)實時數(shù)據(jù)是對網(wǎng)頁上不停更新數(shù)據(jù)的抓取,同時也保持頁面上數(shù)據(jù)的不斷刷新。以下是實時數(shù)據(jù)圖表顯示的部分代碼:varmyChart=echarts.init(document.getElementById('bar'));option_bar={grid:{left:"2%",right:"4%",bottom:"6%",containLabel:true,},xAxis:{type:'value',splitLine:{show:false//不顯示分割線}},yAxis:{type:'category',data:[{%foriteminitems%}'{{item[1]}}',{%endfor%}]},series:[{type:'bar',data:[{%foriteminitems%}'{{item[2]}}',{%endfor%}],label:{show:true,formatter:'{c}',//顯示數(shù)據(jù)帶上百分比position:'right'//控制數(shù)據(jù)顯示位置,‘’right‘’為顯示在柱狀圖右側(cè)}}],color:['rgb(131,175,155)','rgb(252,157,154)','rgb(249,205,173)','rgb(200,200,169)',]};myChart.setOption(option_bar)以下是實時數(shù)據(jù)內(nèi)容展示的部分代碼:<tableclass="tabletable-hover"><thead><tr><th>排名</th><th>內(nèi)容</th><th>熱度</th></tr></thead><tbody>{%foriteminitems%}<tr><td>{{item[0]}}</td><td>{{item[1]}}</td><td>{{item[2]}}</td></tr>{%endfor%}</tbody></table>圖4-6實時數(shù)據(jù)圖表4.4數(shù)據(jù)可視化模塊數(shù)據(jù)可視化模塊分為前端模塊和后端模塊兩個部分。后端部分的功能就是接受前端傳遞過來的請求,并作出回應(yīng)。本設(shè)計利用Flask框架來構(gòu)造web。前端部分是利用Echarts來將圖表展示在頁面上,并通過jQuery和Bootstrap搭建前端框架和美化界面。4.4.1后端模塊利用Flask框架搭建簡易的應(yīng)用,通常分為以下幾個步驟:(1)對實例進行創(chuàng)建。當(dāng)后端收到來自前端的請求時,就會對對應(yīng)的實例進行調(diào)用,等操作完成時,再向前端返回相對應(yīng)的數(shù)據(jù)。(2)創(chuàng)建路由和函數(shù)。路由對應(yīng)著url,當(dāng)在其他前端模板中調(diào)用url,url與相應(yīng)的路由相對應(yīng)時,就會調(diào)用相對應(yīng)的函數(shù)。(3)調(diào)用前端模板。等運行完實例之后,獲取到對應(yīng)的數(shù)據(jù),F(xiàn)lask相繼會調(diào)用對應(yīng)的前端模板,將數(shù)據(jù)傳送到前端界面上。Flask部分代碼代碼,其他類似:@app.route('/weibo1/')//創(chuàng)建路由defweobo1():db=Mysql()items=db.getItems_weibo()returnrender_template(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度愛奇藝體育賽事賽事直播內(nèi)容制作合同:股票投資回報保障協(xié)議3篇
- 二零二五年度環(huán)保型渣土運輸船租賃合同3篇
- 二零二五年電子商務(wù)平臺運營咨詢合同2篇
- 二零二五年度桉樹木材加工節(jié)能減排合同3篇
- 二零二五版醫(yī)療扶貧公益項目合同3篇
- 二零二五版股份收購項目風(fēng)險評估及控制合同3篇
- 二零二五版生態(tài)旅游區(qū)建設(shè)項目招標合同及生態(tài)保護協(xié)議3篇
- 二零二五版數(shù)據(jù)中心電梯緊急搶修及日常維護合同3篇
- 二零二五年度房產(chǎn)交易居間服務(wù)合同12篇
- 二零二五版國際農(nóng)業(yè)勞務(wù)輸出與管理合同3篇
- 購銷合同電子版完整版
- 福建省福州市延安中學(xué)2023-2024學(xué)年八年級上學(xué)期期末物理模擬試卷+
- 2024年度醫(yī)院肝膽外科實習(xí)生帶教計劃課件
- 微機原理與接口技術(shù)考試試題及答案(綜合-必看)
- 勞務(wù)投標技術(shù)標
- 研發(fā)管理咨詢項目建議書
- 轉(zhuǎn)錢委托書授權(quán)書范本
- 一種配網(wǎng)高空作業(yè)智能安全帶及預(yù)警系統(tǒng)的制作方法
- 某墓園物業(yè)管理日常管護投標方案
- 蘇教版六年級數(shù)學(xué)上冊集體備課記載表
- 內(nèi)蒙古匯能煤電集團有限公司長灘露天煤礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
評論
0/150
提交評論