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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1引言1

1.1項(xiàng)目背景1

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

1.2.1Python簡介2

1.2.2Python第三方庫簡介2

2需求分析3

2.1可行性需求分析3

2.2采集目標(biāo)功能分析3

2.3關(guān)鍵技術(shù)分析4

2.3.1網(wǎng)絡(luò)爬蟲技術(shù)4

2.3.2文件存取技術(shù)5

2.3.3可視化技術(shù)5

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

3.1采集頁面分析6

3.2字段分析7

3.3編程實(shí)現(xiàn)8

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

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

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

4.3編程實(shí)現(xiàn)17

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

5.1數(shù)據(jù)準(zhǔn)備18

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

5.2.1依據(jù)新聞標(biāo)題進(jìn)行統(tǒng)計(jì)20

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

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

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

I

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

5.3綜述24

6小結(jié)25

參考資料26

II

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

鳳凰網(wǎng)新聞?lì)惥W(wǎng)站數(shù)據(jù)分析展示

1引言

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

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

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

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

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

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

活應(yīng)用打下了基礎(chǔ)。

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

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

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

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

們這一代也踩在了信息革命的門檻上,逐漸進(jìn)入到一個(gè)信息漫天飛舞的時(shí)代。

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

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

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

未來。

1.1項(xiàng)目背景

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

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

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

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

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

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

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

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

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

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

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

間社會(huì)上的新聞熱點(diǎn)時(shí)間一系列的關(guān)鍵詞和近期新聞相關(guān)的動(dòng)態(tài)等。所以在我

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

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

1.2.1Python簡介

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

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

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

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

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

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

發(fā)而來,并且Openstack許多接口都支持Python的調(diào)用,對(duì)于平臺(tái)實(shí)現(xiàn)自動(dòng)化

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

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

等面向?qū)ο蟮恼Z言而言更加簡單容易入門、所以它很快的便走進(jìn)了大眾的視野

中。

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

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

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

方庫豐富、免費(fèi)開源、支持多平臺(tái)、可移植性強(qiáng)的特點(diǎn)。

1.2.2Python第三方庫簡介

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

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

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

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

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

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

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

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

數(shù)據(jù)結(jié)構(gòu)比Python自帶的更加高效。

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

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

Matplotlib:繪圖庫,主要是應(yīng)用于二維繪圖,其中包括折線圖、散點(diǎn)圖、

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

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

Pylab:它能設(shè)置畫圖讓其能顯示中文。

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

Python是一門通俗易懂的面向?qū)ο笳Z言里面的計(jì)算機(jī)編程語言,在這次項(xiàng)

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

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

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

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

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

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

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

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

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

2、項(xiàng)目可行性

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

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

其進(jìn)行更深層的剖析,從中分析出有價(jià)值的一些信息,并將其進(jìn)行可視化,再

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

2.2采集目標(biāo)功能分析

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

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

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

聞信息。

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

時(shí)間、參與人數(shù)、點(diǎn)贊人數(shù)、發(fā)布地等數(shù)據(jù),我們?cè)趯?duì)原始數(shù)據(jù)進(jìn)行預(yù)處理后

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

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

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

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

2.3關(guān)鍵技術(shù)分析

2.3.1網(wǎng)絡(luò)爬蟲技術(shù)

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

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

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

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

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

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

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

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

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

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

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

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

來獲利的,而爬蟲僅是用知識(shí)來代替一些重復(fù)無意義的動(dòng)作,是在合法且合理

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

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

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

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

定的壓力,如果一時(shí)間處理不過來服務(wù)器就會(huì)自動(dòng)關(guān)機(jī),也就是宕機(jī),這也就

是常見的DDOS攻擊。

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

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

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

犯罪的深了。

存在爬蟲技術(shù),那就一定也存在反爬的技術(shù)。當(dāng)然高級(jí)的爬蟲一般都會(huì)涉

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

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

的反爬機(jī)制有IP、Ajax異步、css反爬、JS加密、驗(yàn)證碼等手段。存在這些手

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

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

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

2.3.2文件存取技術(shù)

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

圖2-1python存取方法

圖2-2python讀取方法

2.3.3可視化技術(shù)

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

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

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

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

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

夠看懂讀懂,但是當(dāng)它有千上萬條的時(shí)候我們?cè)诙虝r(shí)間內(nèi)很難看出其端倪和破

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

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

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

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

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

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

包含了很多庫,分別對(duì)應(yīng)詞云圖、條形圖、餅圖、折線圖等圖形,可以很好的

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

終結(jié)論。

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

3.1采集頁面分析

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

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

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

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

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

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

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

3.2字段分析

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

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

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

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

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

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

3.3編程實(shí)現(xiàn)

如圖3-5、3-6所示,先導(dǎo)入所需用到的庫。

圖3-5導(dǎo)入selenium相關(guān)庫

圖3-6導(dǎo)入requests相關(guān)庫

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

frombs4importBeautifulSoup

fromseleniumimportwebdriver

frommon.byimportBy

importtime

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

#導(dǎo)包

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

driver=webdriver.Chrome()

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

time.sleep(1)

#由于目前進(jìn)去需要點(diǎn)擊加載,所以還需一個(gè)循環(huán),等加載完,我們?cè)偃∫呀?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/后面的不一樣,

#如果是廣告的話就不會(huì)滿足/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相關(guān)新聞網(wǎng)址爬取

driver=webdriver.Chrome()

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

time.sleep(1)

foriinrange(0,4):

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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))

##讀書有關(guān)新聞網(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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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))

#國學(xué)相關(guān)新聞網(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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

#print(urls4)

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

#佛相關(guān)新聞爬取

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))

#教育相關(guān)新聞

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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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))

#體育相關(guān)新聞數(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

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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文件存進(jìn)一個(gè)列表

datas=list(data)

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

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

csv_writer=csv.writer(f)

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

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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(']','')

#拿到標(biāo)題,并去除標(biāo)題里的【】

#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ā)布時(shí)間和發(fā)布地就會(huì)按照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ù)和評(píng)論人數(shù)數(shù)據(jù)是js數(shù)據(jù),需要用到請(qǐng)求url,響應(yīng)后截取所需數(shù)據(jù)

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

print('存入成功!!')

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

爬取結(jié)果如圖3-7所示。

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

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

4-1。

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

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

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

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

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

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

4.3編程實(shí)現(xiàn)

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

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

5.1數(shù)據(jù)準(zhǔn)備

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

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

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

5.2.1依據(jù)新聞標(biāo)題進(jìn)行統(tǒng)計(jì)

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

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

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

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

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

是很多的。

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

分析近幾年我們國家教育部是受到國家的重視,對(duì)于教育方面的新聞?wù)務(wù)摰囊?/p>

是很多的。

20

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

占37。46%,八月251條新聞?wù)?3。93%,九月200條新聞?wù)?9。07%,十月60

條新聞?wù)?。72%,十一月63條新聞?wù)?。01%,十二月82條新聞?wù)?。82%。從

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

21

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

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

說明我們中國的媒體的強(qiáng)大之處。

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

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

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

22

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

選取30條數(shù)據(jù),我們提取2022年下半年的新聞數(shù)據(jù),隨機(jī)截?cái)鄮讉€(gè)新聞數(shù)據(jù)

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

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

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

23

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

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

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

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

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

們感興趣才獲得更多的人關(guān)注和評(píng)論,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論