鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示_第1頁
鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示_第2頁
鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示_第3頁
鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示_第4頁
鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

湖南商務職業(yè)技術學院畢業(yè)設計

目錄

1引言1

1.1項目背景1

1.2開發(fā)環(huán)境與工具2

1.2.1Python簡介2

1.2.2Python第三方庫簡介2

2需求分析3

2.1可行性需求分析3

2.2采集目標功能分析3

2.3關鍵技術分析4

2.3.1網(wǎng)絡爬蟲技術4

2.3.2文件存取技術5

2.3.3可視化技術5

3數(shù)據(jù)采集6

3.1采集頁面分析6

3.2字段分析7

3.3編程實現(xiàn)8

4數(shù)據(jù)清洗與處理16

4.1數(shù)據(jù)清洗16

4.2數(shù)據(jù)儲存17

4.3編程實現(xiàn)17

5數(shù)據(jù)統(tǒng)計與分析18

5.1數(shù)據(jù)準備18

5.2數(shù)據(jù)展示20

5.2.1依據(jù)新聞標題進行統(tǒng)計20

5.2.2依據(jù)發(fā)布時間進行統(tǒng)計21

5.2.3據(jù)新聞發(fā)布地址進行統(tǒng)計和分析22

5.2.4依據(jù)新聞參與人數(shù)進行統(tǒng)計23

I

湖南商務職業(yè)技術學院畢業(yè)設計

5.2.5依據(jù)新聞評論人數(shù)進行統(tǒng)計24

5.3綜述24

6小結25

參考資料26

II

湖南商務職業(yè)技術學院畢業(yè)設計

鳳凰網(wǎng)新聞類網(wǎng)站數(shù)據(jù)分析展示

1引言

我國社會重要的發(fā)展的特征就是信息化,現(xiàn)如今在大家眼中,我國信息化

已經(jīng)步入了一個飛速發(fā)展的狀態(tài)。新時代的不斷發(fā)展,正是我們新一輩年輕人

的機會和時機。依托現(xiàn)代化的信息技術和網(wǎng)絡不斷拓寬,信息的發(fā)展速度幅度

提升十分明顯,隨之帶來了大數(shù)據(jù)時代。云服務、大數(shù)據(jù)、物聯(lián)網(wǎng)、人工智能

在當下社會提供了便捷的服務,技術工作者的海量數(shù)據(jù)來源于人們的日常生活

產(chǎn)生出的數(shù)據(jù),讓我們使其分析出來供我們不斷地學習,為我們未來便捷的生

活應用打下了基礎。

我們?nèi)粘I钪行l(wèi)生醫(yī)療、食衣住行等方面產(chǎn)生了大量的數(shù)據(jù)等著價值的

開發(fā)。我們這代人也踩在信息革命的跑道上,慢慢的進入到了一個信息飛舞的

跑道。大量工作者往這一行涌入,做大數(shù)據(jù)的都知道,海量數(shù)據(jù)中

衣食住行、衛(wèi)生醫(yī)療等方面產(chǎn)生的海量數(shù)據(jù)等待開發(fā)的價值愈來愈大。我

們這一代也踩在了信息革命的門檻上,逐漸進入到一個信息漫天飛舞的時代。

大量IT工作者鼓吹風口一詞,引入許多人往這一行業(yè)涌入。大數(shù)據(jù)從業(yè)者都明

白,海量數(shù)據(jù)中隱藏的寶藏等待有緣人也可以說是有心人去發(fā)掘,數(shù)據(jù)科學及

大數(shù)據(jù)技術也成為目前信息技術領域的一個比較熱門的分支,大家都覺得他是

未來。

1.1項目背景

這些年來,隨著不斷發(fā)展的互聯(lián)網(wǎng)技術,各種互聯(lián)網(wǎng)的爆炸數(shù)據(jù)信息把我

們帶入大數(shù)據(jù)的時代。社會上各行各業(yè)都受著大數(shù)據(jù)的時代影響著,它不斷的

在我們生活日常工作和學校中滲透著,不斷影響著社會一直以來的發(fā)展和前進。

在當今大數(shù)據(jù)時代,讓人們通過搜索引擎去獲取數(shù)據(jù)是有很大的難度的,不僅

準確率不高,而且效率低下。網(wǎng)絡數(shù)據(jù)爬蟲的技術是高效的來獲取整合在互聯(lián)

網(wǎng)散落在各個角落的數(shù)據(jù)有效手段,可以將高效且準確的向用戶提供其所需的

數(shù)據(jù)信息。

其中鳳凰網(wǎng)涉及到的新聞信息有許多方面,我們需要對其網(wǎng)頁進行解析。

然后通過一系列的Python爬蟲的手段批量獲取我們想要獲得的資料。

我的畢業(yè)設計就是針對鳳凰網(wǎng)站的各類新聞,然后爬取鳳凰網(wǎng)站的大量新

1

湖南商務職業(yè)技術學院畢業(yè)設計

聞數(shù)據(jù),對它進行處理,分析,再然后可視化。繁雜的新聞數(shù)據(jù)經(jīng)過清洗和分

析后,想要的結果將會一目了然的呈現(xiàn)在我們眼前,然后我們會知道近一段時

間社會上的新聞熱點時間一系列的關鍵詞和近期新聞相關的動態(tài)等。所以在我

的畢業(yè)設計中主要是包含數(shù)據(jù)的爬取、清洗處理、儲存和可視化。

1.2開發(fā)環(huán)境與工具

1.2.1Python簡介

在20世紀80年代末,荷蘭的GuidoRossum創(chuàng)建了Python。在創(chuàng)建之初,

Python并沒有引起大多數(shù)人的注意。21世紀初,谷歌開始在大量的項目業(yè)務中

大規(guī)模應用Python,Python也進入了大眾的視野,從而推動了Python的發(fā)展。

隨著計算機技術的日新月異,2010年后移動互聯(lián)網(wǎng)的大肆普及。云計算、大

數(shù)據(jù)等信息技術興起,其中的大數(shù)據(jù)技術涉及到的數(shù)據(jù)獲取、清洗處理、可視化

都有Python的身影存在。云計算中最主要的框架Openstack就是由Python開

發(fā)而來,并且Openstack許多接口都支持Python的調(diào)用,對于平臺實現(xiàn)自動化

極其友好。再到后來人工智能技術的崛起,AI領域使用了更多的Python技術,用

它作為機器學習、關鍵算法的開發(fā)工具。并且Python入門難度相較于JAVA、C++

等面向對象的語言而言更加簡單容易入門、所以它很快的便走進了大眾的視野

中。

最后,在編程語言中排名。Python已經(jīng)與老的C語言和Java語言并駕齊驅,

逐漸進入了非it行業(yè)工作者的視野。現(xiàn)在,人們用它來開發(fā)簡單的小腳本來自

動處理文件,或者開發(fā)一些小網(wǎng)站來打發(fā)無聊。這也凸顯了Python易學、第三

方庫豐富、免費開源、支持多平臺、可移植性強的特點。

1.2.2Python第三方庫簡介

Requests:最用戶友好的網(wǎng)絡爬蟲庫,這是一個由Python實現(xiàn)的易于使用

的HTTP庫。請求的使用比Urllib簡單得多。必須安裝Python第三方庫才能使

Re:正則表達式解析和處理庫,其中包含各種字符串匹配方法。

Print:他的英文全名是DataPrettyprinter。他使用分支打印的方法輸出

數(shù)據(jù)結果。讓一些長而復雜的數(shù)據(jù)結構輸出更漂亮,讓開發(fā)人員一目了然。

Csv:csv是Python的內(nèi)置模塊,它能讀取csv格式的文件或者將數(shù)據(jù)存入到

csv表格中。csv文件也是表格和數(shù)據(jù)庫中常見的文件操作格式。

2

湖南商務職業(yè)技術學院畢業(yè)設計

NumPy庫是Python數(shù)據(jù)分析的基礎,是處理數(shù)組的Python庫,NumPy庫的

數(shù)據(jù)結構比Python自帶的更加高效。

Pandas:Python數(shù)據(jù)分析的高層次應用庫,也可以進行數(shù)據(jù)清洗。并讓數(shù)

據(jù)分析保存為csv文件

Matplotlib:繪圖庫,主要是應用于二維繪圖,其中包括折線圖、散點圖、

條形圖、扇形圖、直方圖等等。

Wordcloud、Scipy、Jieba:讓中文生成詞云圖的。

Pylab:它能設置畫圖讓其能顯示中文。

2需求分析

2.1可行性需求分析

1、技術可行性

Python是一門通俗易懂的面向對象語言里面的計算機編程語言,在這次項

目里用到了Python編寫實現(xiàn)數(shù)據(jù)獲取的程序,數(shù)據(jù)的清洗預處理,和數(shù)據(jù)可視

化。當然在數(shù)據(jù)的獲取過程中會遇到一系列問題。隨后通過抓包分析發(fā)現(xiàn)鳳凰

網(wǎng)各類新聞頁面的數(shù)據(jù)都動態(tài)傳的頁面,所以我們要通過selenium驅動瀏覽器,

完全模擬瀏覽器的操作控制瀏覽器對它獲取其請求和參數(shù)。之后就能夠得到網(wǎng)

頁面數(shù)據(jù)的網(wǎng)址。然后將爬取出來的原始網(wǎng)址數(shù)據(jù)暫以txt格式儲存起來,再

用利用循環(huán)將txt里的網(wǎng)址進行逐一請求,其中需要通過自己分析尋找到js動

態(tài)請求網(wǎng)址進而加載拿到數(shù)據(jù)庫里的數(shù)據(jù)然后用xlsx格式保存,以上所述為這

次項目技術的可行性,在后續(xù)的工作中我也會將所有的步驟實現(xiàn)到位,從而保

證數(shù)據(jù)的安全性和準確性。

2、項目可行性

這次項目是通過采集鳳凰網(wǎng)網(wǎng)站內(nèi)的數(shù)據(jù),用其來分析我國近期的一些新

聞信息。我們也將從新聞標題、新聞發(fā)布時間、參與人數(shù)、點贊人數(shù)等方面對

其進行更深層的剖析,從中分析出有價值的一些信息,并將其進行可視化,再

最后根據(jù)結果得出最后的結論。

2.2采集目標功能分析

這次項目的數(shù)據(jù)集是來源于鳳凰網(wǎng)新聞網(wǎng)站,通過Python爬取鳳凰網(wǎng)下多

個子頁的全部信息。數(shù)據(jù)清洗后共1049條記錄,成功爬取后盡可能的去檢查數(shù)

3

湖南商務職業(yè)技術學院畢業(yè)設計

據(jù)的準確性,多次確定爬取出來的數(shù)據(jù)無誤并且是屬于當時近期鳳凰網(wǎng)中的新

聞信息。

分析鳳凰網(wǎng)站網(wǎng)頁信息,明確我們需要爬取的數(shù)據(jù)有新聞標題、新聞發(fā)布

時間、參與人數(shù)、點贊人數(shù)、發(fā)布地等數(shù)據(jù),我們在對原始數(shù)據(jù)進行預處理后

會將其數(shù)據(jù)進行多個維度的分析。例如,從標題內(nèi)容對其進行分析,根據(jù)標題

畫出詞云圖,可以大致看到出現(xiàn)的頻率較高的關鍵詞。又或者想要得到哪個時

間段內(nèi)發(fā)布的新聞最多,那么我們就可以根據(jù)發(fā)布時間去統(tǒng)計每短時間的發(fā)布

量,查看哪個時間段發(fā)布最多。

2.3關鍵技術分析

2.3.1網(wǎng)絡爬蟲技術

我們?nèi)粘I顬g覽網(wǎng)頁中通常會遇到需要在本地緩存的數(shù)據(jù),如果數(shù)據(jù)量

較小的時候我們自己可以采取手動的方式去得到自己想要的數(shù)據(jù),但在我們大

數(shù)據(jù)的領域數(shù)據(jù)體量一般用到的都是幾個G甚至幾個T的單位,假如在這個時

候采取手動方式獲取數(shù)據(jù)不用想都是一個很愚蠢的方式,所以我們都會采取網(wǎng)

絡爬蟲的方式來自動化的獲取需要的數(shù)據(jù)。

人們叫網(wǎng)絡爬蟲為網(wǎng)絡機器人,看字面上的意思就是讓電腦自己動,不用

我們自己動手去操作,我們只需要編寫一些程序或者一些小腳本用來自動瀏覽

互聯(lián)網(wǎng),而且還可以對想要的目標網(wǎng)頁進行精確的數(shù)據(jù)采集。時下常見的一些

按照實現(xiàn)的原理和技術結構的網(wǎng)絡爬蟲一般可以分類為:通用網(wǎng)絡爬蟲、增量

式網(wǎng)絡爬蟲、聚焦網(wǎng)絡爬蟲、深層網(wǎng)絡爬蟲等。

現(xiàn)實生活中大家經(jīng)常將黑客與普通的網(wǎng)絡爬蟲混為一談,實則二者之間的

區(qū)別很大。黑客是通過違反法律肆意竊取個人信息或者組織有價值的信息以此

來獲利的,而爬蟲僅是用知識來代替一些重復無意義的動作,是在合法且合理

的范圍里獲取自己想要的信息,一定程度上普通用戶瀏覽網(wǎng)頁和網(wǎng)絡爬蟲是沒

有本質(zhì)上的區(qū)別的,但爬蟲的確也可以作為一種攻擊的手段。大家在編寫網(wǎng)絡

爬蟲腳本時沒有設置一定的睡眠緩沖時間,從而通過極高的頻率反復去訪問客

戶端的網(wǎng)站會讓服務器持續(xù)的在高強度的環(huán)境下工作,這也對服務器會造成一

定的壓力,如果一時間處理不過來服務器就會自動關機,也就是宕機,這也就

是常見的DDOS攻擊。

因此,應用在不同場景的網(wǎng)絡爬蟲技術,發(fā)揮的作用也是不同的。好的場

景下它可以幫助我們完成投票、搶購等操作。但在壞的場景下也能一直發(fā)送騷

4

湖南商務職業(yè)技術學院畢業(yè)設計

擾信息給大家?guī)砝_。所以爬蟲技術是一柄雙刃劍,任何一個不小心就可能

會傷害到自己和他人,因此我們的技術人員要知法守法。我們要在法律允許的

范圍去編寫自己的腳本程序,千萬要小心,不然就神不知鬼不覺的半只腳踏進

犯罪的深了。

存在爬蟲技術,那就一定也存在反爬的技術。當然高級的爬蟲一般都會涉

及到反爬蟲概念,如果能夠繞過或者破開人家設下的防守機制,從而獲取到自

己想要的數(shù)據(jù)時,這時就代表了這個爬蟲工程師的個人水平很不錯了。而常見

的反爬機制有IP、Ajax異步、css反爬、JS加密、驗證碼等手段。存在這些手

段的同時也會加大爬蟲工程師的工作量和網(wǎng)站的開發(fā)成本。像我們平時瀏覽的

一般的小網(wǎng)站頂多都只設置一個小反爬手段,這對于我們這種水平不是很高的

獲取數(shù)據(jù)起來也相對的容易了。同時我們也不用考慮成本的問題。

2.3.2文件存取技術

Python的csv模塊存取如圖2-1、圖2-2所示:

圖2-1python存取方法

圖2-2python讀取方法

2.3.3可視化技術

爬取到的數(shù)據(jù)我們都會先通過預處理然后保存為csv格式的文件。這個數(shù)

據(jù)集我們能不能一眼就得到我們想要的結論呢?答案是不能的!

我們需要用一種技術,根據(jù)獲取到的龐大數(shù)據(jù)將它通過圖片,統(tǒng)計學方式

展現(xiàn)在我們眼前,讓我們對它的結果一目了然。這個呢,就是數(shù)據(jù)可視化技術。

很顯然我們獲取到的數(shù)據(jù)一些冗長的字符串,上面寫的每信息或許我們能

夠看懂讀懂,但是當它有千上萬條的時候我們在短時間內(nèi)很難看出其端倪和破

綻的,我們必要深入的了解和分析。對這枯燥而乏味的數(shù)據(jù)集進行處理完后,

我們就需要導入要用到的第三方庫將數(shù)據(jù)合理的進行判斷,決定用什么樣的幾

何圖形才能直觀的表達出數(shù)據(jù)集信息。

5

湖南商務職業(yè)技術學院畢業(yè)設計

這多年以來可視化的技術也逐漸發(fā)展為了以下三個種類:可視化分析、信

息可視化、科學可視化。而我們這里用到的就是信息可視化,信息可視化的處

理對象是非結構化、非幾何抽象的數(shù)據(jù),比如金融交易、社交網(wǎng)絡和文本數(shù)據(jù),

其核心是針對大尺度高維復雜的數(shù)據(jù)怎樣減少視覺混淆對信息的干擾。

這次項目中只是把得到的數(shù)據(jù)用簡單的可視化手段將其進行可視化操作,

具體的方法就是用Python的第三方庫Matplotlib進行可視化,Matplotlib中

包含了很多庫,分別對應詞云圖、條形圖、餅圖、折線圖等圖形,可以很好的

將數(shù)據(jù)表現(xiàn)出來,可視化圖形呈現(xiàn)出來的圖后對于結果一目了然,然后得出最

終結論。

3數(shù)據(jù)采集

3.1采集頁面分析

我們首先通過谷歌瀏覽器搜索鳳凰網(wǎng)的官方網(wǎng)頁,然后找到新聞目錄集頁

面觀察圖3-1,其中URL為:鳳凰網(wǎng)(),然后點擊頁面,同時觀察

URL,發(fā)現(xiàn)URL有變化。

圖3-1數(shù)據(jù)網(wǎng)址頁面

按F12調(diào)出開發(fā)者工具,刷新頁面,如圖3-2。

6

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-2開發(fā)者工具

利用全局搜索工具定位所需數(shù)據(jù)的位置,點擊開發(fā)者工具上面的字段,分

析這是個什么請求網(wǎng)頁,發(fā)現(xiàn)這個是一個get請求,而且數(shù)據(jù)還是在js數(shù)據(jù)里,

那我們需要尋找它的的js,以及再次請求的網(wǎng)址如圖3-3。

圖3-3請求網(wǎng)址

3.2字段分析

如圖3-4,我們首先將需要的新聞網(wǎng)址都爬下來,再一個個用Selenium在

網(wǎng)頁面打開網(wǎng)頁的選擇欄,然后將選擇欄目定位到新聞標題的位置也就是定位

到我們所需要的數(shù)據(jù)所在的位置,然后跳出開發(fā)者工具頁面刷新一下頁面再進

入,點擊開發(fā)者工具界面上方的數(shù)據(jù)預覽Preview按鈕。通過以上操作,我們

知道了所需數(shù)據(jù)具體位置,通過爬取手段得到所需字段數(shù)據(jù),在此采集了新聞

7

湖南商務職業(yè)技術學院畢業(yè)設計

的標題、發(fā)布時間、參與人數(shù)、點贊人數(shù)和發(fā)布地字段。

Requests方法中的get方法來獲得響應的數(shù)據(jù),所以我們需要重復的獲取

響應數(shù)據(jù),然后依次寫入到csv格式的文件當中。

圖3-4分析數(shù)據(jù)類型頁面

3.3編程實現(xiàn)

如圖3-5、3-6所示,先導入所需用到的庫。

圖3-5導入selenium相關庫

圖3-6導入requests相關庫

代碼實現(xiàn)如下所示:

frombs4importBeautifulSoup

fromseleniumimportwebdriver

frommon.byimportBy

importtime

8

湖南商務職業(yè)技術學院畢業(yè)設計

#導包

#根據(jù)界面網(wǎng)址用selenium以及BeautifulSoup得到所需網(wǎng)址下的所有新聞。

driver=webdriver.Chrome()

driver.get('/shanklist/14-35083-')

time.sleep(1)

#由于目前進去需要點擊加載,所以還需一個循環(huán),等加載完,我們再取已經(jīng)加載完的界面所有

網(wǎng)址。

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data1=driver.page_source

time.sleep(1)

driver.close()

soup1=BeautifulSoup(data1,'html.parser')

sj=soup1.find_all('a')

print(sj)

url1=[]

#篩選我們需要的網(wǎng)址,我們要的網(wǎng)址都有規(guī)律,就是主網(wǎng)址前面都一樣只有c/后面的不一樣,

#如果是廣告的話就不會滿足/c

foriinsj:

if'/c'ini.get('href'):

url1.append(i.get('href'))

else:

continue

print(url1)

urls1=[]

foriinurl1[1:]:

urls1.append(i.split('=')[4])

print(urls1)

print('urls1:',len(urls1))

#5G相關新聞網(wǎng)址爬取

driver=webdriver.Chrome()

driver.get('https://5/')

time.sleep(1)

foriinrange(0,4):

9

湖南商務職業(yè)技術學院畢業(yè)設計

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv[3]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data2=driver.page_source

time.sleep(1)

driver.close()

soup2=BeautifulSoup(data2,'html.parser')

sj=soup2.find_all('a')

#print(sj)

url2=[]

foriinsj:

if'/c'ini.get('href'):

url2.append(i.get('href'))

else:

continue

#print(url2)

urls2=[]

foriinurl2[15:-5]:

urls2.append(i.split('=')[4])

print(urls2)

print('urls2:',len(urls2))

##讀書有關新聞網(wǎng)址爬取

driver=webdriver.Chrome()

driver.get('/')

time.sleep(1)

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv[3]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data3=driver.page_source

time.sleep(1)

driver.close()

soup3=BeautifulSoup(data3,'html.parser')

sj=soup3.find_all('a')

#print(sj)

10

湖南商務職業(yè)技術學院畢業(yè)設計

url3=[]

foriinsj:

if'/c'ini.get('href'):

url3.append(i.get('href'))

else:

continue

#print(url3)

urls3=[]

foriinurl3[15:-5]:

#ifi.startswith('/c')==True:

#urls3.append(i)

#else:

urls3.append(i.split('=')[4])

print(urls3)

print('urls3:',len(urls3))

#國學相關新聞網(wǎng)址爬取

driver=webdriver.Chrome()

driver.get('/')

time.sleep(1)

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv[3]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data4=driver.page_source

time.sleep(1)

driver.close()

soup4=BeautifulSoup(data4,'html.parser')

sj=soup4.find_all('a')

#print(sj)

url4=[]

foriinsj:

if'/c'ini.get('href'):

url4.append(i.get('href'))

else:

continue

urls4=[]

foriinurl4[15:-5]:

urls4.append(i.split('=')[4])

11

湖南商務職業(yè)技術學院畢業(yè)設計

#print(urls4)

print('urls4:',len(urls4))

#佛相關新聞爬取

driver=webdriver.Chrome()

driver.get('/')

time.sleep(1)

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv[4]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data5=driver.page_source

time.sleep(1)

driver.close()

soup5=BeautifulSoup(data5,'html.parser')

sj=soup5.find_all('a')

#print(sj)

url5=[]

foriinsj:

if'/c'ini.get('href'):

url5.append(i.get('href'))

else:

continue

#print(url5)

urls5=[]

foriinurl5[15:-5]:

ifi.startswith('/c'):

url5.append(i)

else:

urls5.append(i.split('=')[4])

#print(urls5)

print('urls5:',len(urls5))

#教育相關新聞

driver=webdriver.Chrome()

driver.get('/')

time.sleep(1)

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

12

湖南商務職業(yè)技術學院畢業(yè)設計

iv[3]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data6=driver.page_source

time.sleep(1)

driver.close()

soup6=BeautifulSoup(data6,'html.parser')

sj=soup6.find_all('a')

#print(sj)

url6=[]

foriinsj:

ifi.get('href')!=None:

if'/c'ini.get('href'):

url6.append(i.get('href'))

else:

continue

else:break

print(url6)

urls6=[]

foriinurl6:

ifi.startswith('/c'):

urls6.append(i)

else:

urls6.append(i.split('=')[4])

#print(urls6)

print('urls6:',len(urls6))

#體育相關新聞數(shù)據(jù)

driver=webdriver.Chrome()

driver.get('/')

time.sleep(1)

foriinrange(0,9):

dianji=driver.find_element(By.XPATH,'//*[@id="root"]/div[5]/div[1]/d

iv[3]/div/a')

time.sleep(1)

dianji.click()

time.sleep(1)

print(i)

data=driver.page_source

#print(data1)

13

湖南商務職業(yè)技術學院畢業(yè)設計

time.sleep(1)

driver.close()

soup=BeautifulSoup(data,'html.parser')

sj=soup.find_all('a')

#print(sj)

url=[]

foriinsj:

ifi.get('href')!=None:

if''ini.get('href'):

url.append(i.get('href'))

else:

continue

else:break

urls=[]

foriinurl[15:-5]:

urls.append(i.split('=')[4])

#print(urls)

print('urls:',len(urls))

#我們把需要的網(wǎng)址都爬下來后,存入txt文本里

URL=[]

URL=urls1+urls2+urls3+urls4+urls5+urls6+urls

print(len(URL))

URLS=[]

URLS=set(URL)#去除相同的新聞地址

print(len(URLS))

withopen('shuju.txt','a')asf:

[f.write(str(i)+'\n')foriinURLS]

f.close()

importrequests

fromlxmlimportetree

importre

importcsv

withopen('shuju.txt','r')asf:

data=f.readlines()

#print(data)

#把之前爬下的網(wǎng)址txt文件存進一個列表

datas=list(data)

#通過循環(huán)列表里的網(wǎng)址,一個一個的進行數(shù)據(jù)提取

withopen('data.csv','w',encoding='utf-8',newline='')asf:

csv_writer=csv.writer(f)

csv_writer.writerow(["標題",'發(fā)布時間','參與人數(shù)','評論人數(shù)','發(fā)布地'])

14

湖南商務職業(yè)技術學院畢業(yè)設計

foriindatas:

print(i)

i=i.replace('\n','')

response=requests.get(i)

html=etree.HTML(response.text)

a

=str(html.xpath('//*[@id="root"]/div/div[3]/div[1]/div[1]/div[1]/h1/

text()')).replace('[','').replace(']','')

#拿到標題,并去除標題里的【】

#print(str(a).replace('[','').replace(']',''))

b=

html.xpath('//*[@id="root"]/div/div[3]/div[1]/div[1]/div[1]/div[1]/d

iv[1]/div[2]/div[2]/a/text()')

h=html.xpath('//*[@id="root"]/div/div[3]/div[1]/div[1]/div[1]/div[1]

/div[1]/div[2]/div[2]/a/text()')

iflen(b)!=0:

bb=b[0]

hh=h[2]

#判斷假如b的長度不為0,則發(fā)布時間和發(fā)布地就會按照bb=b[0],hh=h[2]為值

q=i.split('/')[4]

p=

('/get.php?job=1&format=js&docurl=ucms_{}&c

allback=_83f50173102cd04cd5bdecae73febbc6').format(q)

response=requests.get(p)

pattern1=r'(?<="count":).(?=)'

pattern2=r'(?<="join_count":).(?=)'

e=response.content.decode('utf-8')

c=re.search(pattern1,e).group()

d=re.search(pattern2,e).group()

#參與人數(shù)和評論人數(shù)數(shù)據(jù)是js數(shù)據(jù),需要用到請求url,響應后截取所需數(shù)據(jù)

csv_writer.writerow([a,bb,c,d,hh])

print('存入成功??!')

print('存入!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')

爬取結果如圖3-7所示。

15

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-7數(shù)據(jù)結果

4數(shù)據(jù)清洗與處理

4.1數(shù)據(jù)清洗

經(jīng)過比對和檢查,發(fā)現(xiàn)數(shù)據(jù)不存在缺失,錯位還有空值,那么我們根據(jù)需

求將有效數(shù)據(jù)統(tǒng)一規(guī)劃去掉不要的行列數(shù)據(jù),防止數(shù)據(jù)冗余,清洗結果如圖

4-1。

圖4-1數(shù)據(jù)清洗結果

16

湖南商務職業(yè)技術學院畢業(yè)設計

4.2數(shù)據(jù)儲存

數(shù)據(jù)儲存有很多種的方法,常見的可以用記事本格式(txt),或者用其他

文件的形式儲存csv、json、excel等,但是上面方法保存的數(shù)據(jù)體的數(shù)量普遍

都小。假如需要儲存很大的數(shù)據(jù)信息那么就需要用到數(shù)據(jù)庫,數(shù)據(jù)庫也分成非

關系型和關系型數(shù)據(jù)庫。關系型數(shù)據(jù)庫比較經(jīng)典的有MySQL和Oracle等,非關

系型數(shù)據(jù)庫是以鍵值對形式儲存數(shù)據(jù)的一般有Mongodb、Redis等。圖4-2是我

存入清洗存入后的數(shù)據(jù),我在清洗數(shù)據(jù)后直接寫入了xlsx格式文件。

圖4-2數(shù)據(jù)存儲頁面

4.3編程實現(xiàn)

對數(shù)據(jù)進行清洗和存儲的如下4-3所示。

17

湖南商務職業(yè)技術學院畢業(yè)設計

圖4-3數(shù)據(jù)清洗編程實現(xiàn)

5數(shù)據(jù)統(tǒng)計與分析

5.1數(shù)據(jù)準備

導入相關庫如圖5-1、圖5-2所示,使用pandas加載源數(shù)據(jù)。

圖5-1數(shù)據(jù)準備頁面

18

湖南商務職業(yè)技術學院畢業(yè)設計

圖5-2數(shù)據(jù)加載頁面

19

湖南商務職業(yè)技術學院畢業(yè)設計

5.2數(shù)據(jù)展示

5.2.1依據(jù)新聞標題進行統(tǒng)計

圖5-3數(shù)據(jù)展示頁面

將在表格中新聞標題的字段數(shù)據(jù)進行匯總和處理然后將其統(tǒng)計出現(xiàn)的頻率,

最后生成特定序列,通過特定序列里面的數(shù)據(jù)再按照詞頻生成詞云圖,如圖5-3

所示,可以看出中方的頻率、美和俄媒出現(xiàn)的頻率、愛國者出現(xiàn)的頻率都是比

較高的,國家關系在鳳凰網(wǎng)新聞的網(wǎng)站上出現(xiàn)多次也足以說明它們在當今討論

是很多的。

不僅如此,我還發(fā)現(xiàn)上榜的關鍵詞還有是關于教育方面的比較多。從側面

分析近幾年我們國家教育部是受到國家的重視,對于教育方面的新聞談論的也

是很多的。

20

湖南商務職業(yè)技術學院畢業(yè)設計

5.2.2依據(jù)發(fā)布時間進行統(tǒng)計

圖5-4數(shù)據(jù)展示頁面

根據(jù)鳳凰網(wǎng)站的新聞發(fā)布的時間繪制餅圖如圖5-4所示,所用新聞數(shù)據(jù)都

是在2022年的下半年的共采集了969條新聞數(shù)據(jù),占比依次是七月393條新聞

占37。46%,八月251條新聞占23。93%,九月200條新聞占19。07%,十月60

條新聞占5。72%,十一月63條新聞占6。01%,十二月82條新聞占7。82%。從

圖可一眼看出七月發(fā)布數(shù)量是最多的,而十月發(fā)布數(shù)量是最少的。

21

湖南商務職業(yè)技術學院畢業(yè)設計

5.2.3據(jù)新聞發(fā)布地址進行統(tǒng)計和分析

圖5-5數(shù)據(jù)展示頁面

根據(jù)發(fā)布地點繪制柱狀圖如圖5-5所示,可以得知新聞發(fā)布地是北京最多。

要知道我們國家對新聞媒體是很多的,但絕大多數(shù)都是在北京,但是呢,發(fā)布

出來的新聞不是局限在北京一個地方,全中國乃至世界的新聞都有,也間接的

說明我們中國的媒體的強大之處。

我們可以很明顯的看到排名第一的地區(qū)和排名靠后的地區(qū)數(shù)據(jù)相差很大。

這個就說明在一定程度上北京是在行業(yè)內(nèi)有很大的優(yōu)勢和社會地位的。地域上

來看,大多數(shù)發(fā)布地都是分布在北方位置。

22

湖南商務職業(yè)技術學院畢業(yè)設計

5.2.4依據(jù)新聞參與人數(shù)進行統(tǒng)計

圖5-6數(shù)據(jù)展示頁面

根據(jù)參與人數(shù)繪制折線圖如圖5-6所示,從獲取的969條新聞數(shù)據(jù)中隨機

選取30條數(shù)據(jù),我們提取2022年下半年的新聞數(shù)據(jù),隨機截斷幾個新聞數(shù)據(jù)

將其以折線圖的形式可視化,我們從圖5-7折線圖可以看出22年7月份到22

年12月份,新聞參與人數(shù)幾經(jīng)波折,但是還是呈現(xiàn)一個上升的趨勢。而且從整

個圖形來看還是有很多條新聞是沒有參與者的,它的參與人數(shù)為0。

23

湖南商務職業(yè)技術學院畢業(yè)設計

5.2.5依據(jù)新聞評論人數(shù)進行統(tǒng)計

圖5-8數(shù)據(jù)展示頁面

從網(wǎng)頁上獲取的969條新聞數(shù)據(jù)中隨機選取40條數(shù)據(jù),畫成直方圖如圖

5-8所示,可以看出參與評論的人數(shù)也是參差不齊的,也可以說明新聞只有讓人

們感興趣才獲得更多的人關注和評論,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論