基于python的上海證券交易所證券網(wǎng)站股票數(shù)據(jù)采集與分析_第1頁(yè)
基于python的上海證券交易所證券網(wǎng)站股票數(shù)據(jù)采集與分析_第2頁(yè)
基于python的上海證券交易所證券網(wǎng)站股票數(shù)據(jù)采集與分析_第3頁(yè)
基于python的上海證券交易所證券網(wǎng)站股票數(shù)據(jù)采集與分析_第4頁(yè)
基于python的上海證券交易所證券網(wǎng)站股票數(shù)據(jù)采集與分析_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

目錄

1引言............................................................................................................................1

1.1項(xiàng)目背景......................................................................................................1

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

1.2.1Python簡(jiǎn)介..........................................................................................2

1.2.2MySQL簡(jiǎn)介............................................................................................3

1.2.3JypyterLab簡(jiǎn)介..................................................................................3

1.2.4Pycharm簡(jiǎn)介........................................................................................4

2需求分析....................................................................................................................4

2.1可行性需求分析..........................................................................................4

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

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

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

2.3.2文件存取技術(shù).......................................................................................7

2.3.3可視化技術(shù)...........................................................................................8

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

3.1采集綜合一..................................................................................................9

3.1.1采集頁(yè)面分析.......................................................................................9

3.1.2字段分析.............................................................................................11

3.1.3編程實(shí)現(xiàn).............................................................................................11

3.2采集綜合二—獲取歷史股票數(shù)據(jù)................................................................13

3.2.1采集頁(yè)面分析.....................................................................................13

3.2.2字段分析.............................................................................................15

3.2.3編程實(shí)現(xiàn).............................................................................................16

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

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

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

I

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

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

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

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

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

5.2.1依據(jù)股票上市公司的成交額進(jìn)行統(tǒng)計(jì).............................................25

5.2.2依據(jù)股市開(kāi)盤(pán)、收盤(pán)、最高、最低、成交量和成交額進(jìn)行統(tǒng)計(jì).26

5.2.3據(jù)公司簡(jiǎn)稱數(shù)量分類(lèi)進(jìn)行統(tǒng)計(jì)和分析.............................................28

5.2.4依據(jù)股票O(jiān)BV數(shù)值進(jìn)行統(tǒng)計(jì).............................................................29

5.3綜述............................................................................................................29

6小結(jié)..........................................................................................................................30

參考資料.........................................................................................................................31

II

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

基于python的上海證券交易所證券網(wǎng)站股票數(shù)

據(jù)采集與分析

1引言

從上個(gè)時(shí)代開(kāi)始,政府和各個(gè)領(lǐng)域(如醫(yī)療、互聯(lián)網(wǎng)、金融、電信)的信息

化得到了快速發(fā)展,積累了龐大數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)占到了87%。這些數(shù)據(jù)由

國(guó)內(nèi)來(lái)存儲(chǔ),他們有充足的硬件設(shè)備,但是,這些海量數(shù)據(jù)如何才能產(chǎn)生最大

的商業(yè)價(jià)值?仍是一個(gè)巨大的挑戰(zhàn)。接著,基于數(shù)據(jù)的快速增長(zhǎng),越來(lái)越大的

數(shù)據(jù)量需要存儲(chǔ),這些數(shù)據(jù)很難被傳統(tǒng)的數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)、管理、查詢

和分析,海量數(shù)據(jù)如何分布式存儲(chǔ)和分析是第二個(gè)巨大的挑戰(zhàn)。應(yīng)對(duì)這兩大挑

戰(zhàn),大數(shù)據(jù)(BigData)的觀念及其技術(shù)就由此而生,并在解決這兩大挑戰(zhàn)的

過(guò)程中不斷進(jìn)步和改善。

單純的技術(shù)和單獨(dú)的理念都不是大數(shù)據(jù),而是一套技術(shù)和整體的概念,它

還是一個(gè)生態(tài)圈。僅有大數(shù)據(jù)是不夠的,那么你如何使用大數(shù)據(jù)平臺(tái)?一旦你

在大數(shù)據(jù)平臺(tái)上存儲(chǔ)了足夠多的數(shù)據(jù),就必須對(duì)其進(jìn)行分析,并利用分析結(jié)果

來(lái)做出決策。預(yù)測(cè)性分析是大數(shù)據(jù)分析的一種常見(jiàn)模式,它分析收集的數(shù)據(jù)以

預(yù)測(cè)未來(lái)行為或趨勢(shì)。通過(guò)根據(jù)事物的過(guò)去和現(xiàn)在來(lái)估計(jì)未來(lái),根據(jù)已知來(lái)預(yù)

測(cè)未知,可以減少對(duì)未來(lái)事物理解的不確定性,指導(dǎo)決策行為,減少?zèng)Q策的盲

目性。除了預(yù)測(cè)性分析,還有相關(guān)性分析。關(guān)聯(lián)分析的目標(biāo)是識(shí)別數(shù)據(jù)之間的

內(nèi)在關(guān)系。

大數(shù)據(jù)時(shí)代來(lái)到了我們身邊,網(wǎng)絡(luò)爬蟲(chóng)技術(shù)已成為我們生活中經(jīng)常用來(lái)解

決數(shù)據(jù)量不夠、數(shù)據(jù)不夠豐富、數(shù)據(jù)不夠簡(jiǎn)練等問(wèn)題。公司對(duì)用戶的客觀行

為、研發(fā)產(chǎn)品的缺點(diǎn)和比賽對(duì)手的消息分析最缺的是什么?是數(shù)據(jù),它們都來(lái)

自數(shù)據(jù)采集。那么,高效的數(shù)據(jù)采集離不開(kāi)網(wǎng)絡(luò)爬蟲(chóng)。

1.1項(xiàng)目背景

現(xiàn)在有一個(gè)重要的學(xué)科金融和數(shù)據(jù)分析正在快速發(fā)展,它的應(yīng)用可以是實(shí)

時(shí)分析。它的應(yīng)用技術(shù)包括數(shù)據(jù)處理、科技、簡(jiǎn)練的算法、分析方法和軟件,

使用它將會(huì)給決策者獲得詳細(xì)和獨(dú)到的洞察力。

一家大型的股票或者證券上市公司的固定資產(chǎn)絕對(duì)不限于他們的樓房和股

票,它的經(jīng)營(yíng)能力、社會(huì)生產(chǎn)技術(shù)、培養(yǎng)的高薪技術(shù)人才等信息創(chuàng)造的社會(huì)價(jià)

1

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

值、公司利潤(rùn)等信息也很重要。

對(duì)于一家各行業(yè)上市公司而言,它作為股份有限公司的特殊部分,在公開(kāi)

發(fā)布股票以及達(dá)到需要滿足的規(guī)模后,才能依法進(jìn)行證券市場(chǎng)交易。所以,觀

察公司經(jīng)營(yíng)情況、統(tǒng)計(jì)公司資金流動(dòng)、看清市場(chǎng)行情并做出有利決策等關(guān)系到

公司可持續(xù)發(fā)展的重要決策。為進(jìn)一步了解情況,就需要獲取各上市公司的股

票代碼的詳細(xì)信息,所以我們可以訪問(wèn)上海證券交易所查詢相關(guān)資料。

網(wǎng)頁(yè)中涉及到的上市公司股票代碼很多,數(shù)據(jù)結(jié)構(gòu)較為復(fù)雜,我們可以對(duì)

該網(wǎng)頁(yè)進(jìn)行多次層次分析,并解析。接著使用Python爬蟲(chóng)獲取并存儲(chǔ)我們需

要的數(shù)據(jù)。

我的畢業(yè)設(shè)計(jì)就是滿足對(duì)不同的股票上市公司經(jīng)營(yíng)的決策需要,對(duì)不可控

因數(shù)的防控,對(duì)可利用因數(shù)的掌握,并有效促進(jìn)和推動(dòng)公司未來(lái)發(fā)展。我們需

要爬取上海證券交易所的已公布的公司數(shù)據(jù),對(duì)其數(shù)據(jù)清洗,數(shù)據(jù)存儲(chǔ),數(shù)據(jù)

分析和數(shù)據(jù)可視化。大量的數(shù)據(jù)經(jīng)過(guò)上述處理后,可以展示到各行業(yè)公司執(zhí)行

者或決策者面前。公司決策人員會(huì)抓住市場(chǎng)的有利形勢(shì),國(guó)家的市場(chǎng)經(jīng)濟(jì)政

策,公司當(dāng)前面臨的技術(shù)、資金、人員的一系列問(wèn)題,以及當(dāng)前形勢(shì)下公司各

領(lǐng)域的優(yōu)勢(shì),對(duì)該行業(yè)公司經(jīng)營(yíng)情況做出正確的決策,從而規(guī)避投資風(fēng)險(xiǎn),達(dá)

到長(zhǎng)遠(yuǎn)規(guī)劃,創(chuàng)造更多的價(jià)值利益。

我的畢業(yè)設(shè)計(jì)主要包含數(shù)據(jù)采集、清洗數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、分析數(shù)據(jù)、數(shù)據(jù)

可視化。

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

1.2.1Python簡(jiǎn)介

Python是一種易于學(xué)習(xí)又功能強(qiáng)大的編程語(yǔ)言。它提供了高效的高級(jí)數(shù)

據(jù)結(jié)構(gòu),還能簡(jiǎn)單有效地面向?qū)ο缶幊?。Python優(yōu)雅的語(yǔ)法和動(dòng)態(tài)類(lèi)型,以

及解釋型語(yǔ)言的本質(zhì),使它成為多數(shù)平臺(tái)上寫(xiě)腳本和快速開(kāi)發(fā)應(yīng)用的理想語(yǔ)

言。

Python解釋器及豐富的標(biāo)準(zhǔn)庫(kù),提供了適用于各個(gè)主要系統(tǒng)平臺(tái)的源碼

或機(jī)器碼,這些可以到Python官網(wǎng)/免費(fèi)獲

取,并可自由地分發(fā)。許多免費(fèi)的第三方Python模塊、程序、工具和它們的

文檔,也能在這個(gè)網(wǎng)站上找到對(duì)應(yīng)內(nèi)容或鏈接。

Python解釋器易于擴(kuò)展,可以使用C或C++(或者其他可以通過(guò)C調(diào)

用的語(yǔ)言)擴(kuò)展新的功能和數(shù)據(jù)類(lèi)型。Python也可用于可定制化軟件中的擴(kuò)

2

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

展程序語(yǔ)言。

Python語(yǔ)言擁有強(qiáng)大的“膠水”功能可以把多種不同語(yǔ)言編寫(xiě)的程序融合

到一起實(shí)現(xiàn)無(wú)縫拼接,更好地發(fā)揮不同語(yǔ)言和工具的優(yōu)勢(shì),滿足不同應(yīng)用領(lǐng)域

的需求。Python自誕生以來(lái),在30多年的時(shí)間里,已經(jīng)滲透到云計(jì)算、大數(shù)

據(jù)分析、Web前端開(kāi)發(fā)、統(tǒng)計(jì)分析、移動(dòng)終端開(kāi)發(fā)、科學(xué)計(jì)算、系統(tǒng)運(yùn)維、人

工智能、機(jī)器學(xué)習(xí)、密碼學(xué)、計(jì)算機(jī)輔助教學(xué)等幾乎所有專業(yè)和領(lǐng)域,在黑客

領(lǐng)域更是多年來(lái)一直擁有霸主地位。

本項(xiàng)目使用的是python3.9

1.2.2MySQL簡(jiǎn)介

對(duì)于一個(gè)系統(tǒng)而言,數(shù)據(jù)庫(kù)本身意味著對(duì)數(shù)據(jù)的持久化的一種實(shí)現(xiàn)方式,

該實(shí)現(xiàn)方式是相對(duì)于通過(guò)文件等保存數(shù)據(jù)的方式來(lái)描述的。通過(guò)數(shù)據(jù)庫(kù)使數(shù)據(jù)

管理更加便捷,且數(shù)據(jù)本身有跡可循,最終,大量的數(shù)據(jù)集合成一個(gè)倉(cāng)庫(kù),稱

為數(shù)據(jù)庫(kù)。

MySQL數(shù)據(jù)庫(kù)的標(biāo)志是一個(gè)可愛(ài)的小海豚,它象征著這個(gè)數(shù)據(jù)庫(kù)的讀取、存

取速度和優(yōu)秀準(zhǔn)確的含義。它不僅高效而且安全、能與多款主流的計(jì)算機(jī)語(yǔ)言

緊密結(jié)合,十分方便開(kāi)發(fā)人員對(duì)其進(jìn)行操作。對(duì)于企業(yè)而言,MySQL的體量小、

操作并不復(fù)雜。關(guān)鍵是開(kāi)源免費(fèi),極大的節(jié)省了公司的成本。受到普通中小企

業(yè)的喜愛(ài)和歡迎。個(gè)人用戶可以網(wǎng)上下載MySQL數(shù)據(jù)庫(kù)十分方便。

活潑美麗的小海豚是MYSQL數(shù)據(jù)庫(kù)的標(biāo)志,作為中小型數(shù)據(jù)庫(kù),MYSQL的

小海豚比hive的大象、docker的鯨魚(yú)小很多,雖然它的吞吐量雖小,不具備

海量式數(shù)據(jù)存儲(chǔ),但是它依然能存儲(chǔ)大量數(shù)據(jù),對(duì)數(shù)據(jù)的讀取、存儲(chǔ)非常優(yōu)

秀。作為一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),能夠存儲(chǔ)的數(shù)據(jù)量不多,麻雀雖小五臟

俱全,它不僅對(duì)數(shù)據(jù)的增、刪、改、查由統(tǒng)一軟件進(jìn)行管理和控制,而且速度

極快、高效而且安全,能與多款主流的計(jì)算機(jī)語(yǔ)言緊密結(jié)合,十分方便開(kāi)發(fā)人

員對(duì)其進(jìn)行操作。

1.2.3JypyterLab簡(jiǎn)介

JupyterLab是最新的基于網(wǎng)絡(luò)的筆記本、代碼和數(shù)據(jù)的互動(dòng)開(kāi)發(fā)環(huán)境。它

靈活的界面允許用戶配置和安排數(shù)據(jù)科學(xué)、科學(xué)計(jì)算、計(jì)算新聞和機(jī)器學(xué)習(xí)的

工作流程。一個(gè)模塊化的設(shè)計(jì)邀請(qǐng)了一些擴(kuò)展來(lái)擴(kuò)展和豐富功能。

Python第三方庫(kù)簡(jiǎn)介:

Pandas庫(kù)提供了工具用來(lái)分析結(jié)構(gòu)化數(shù)據(jù),它能用來(lái)數(shù)據(jù)分析、數(shù)據(jù)清洗

3

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

和數(shù)據(jù)挖掘,還能使用多維矩陣。

Numpy庫(kù)它是Python進(jìn)行數(shù)據(jù)分析的基石,能產(chǎn)生隨機(jī)數(shù),轉(zhuǎn)換典型復(fù)

雜數(shù)據(jù),還能處理高等數(shù)學(xué)中的線性代數(shù)和產(chǎn)生多維數(shù)組對(duì)象。

Time庫(kù)Python處理時(shí)間的模塊

Json庫(kù)Python高效處理在Python和Json之間轉(zhuǎn)換的庫(kù)

Re庫(kù)Python使用正則表達(dá)式的拓展庫(kù)

Random庫(kù)它能制造和生成隨機(jī)數(shù)。

Pyecharts庫(kù)Python繪制優(yōu)美數(shù)據(jù)可視化庫(kù),更加傾向于多維數(shù)據(jù)繪

圖。比如柱狀圖、折線圖、3D柱狀圖、漏斗圖。

Requests庫(kù)Python內(nèi)置了requests模塊,該模塊主要用來(lái)發(fā)送HTTP請(qǐng)

求,requests模塊比urllib模塊更簡(jiǎn)潔。

1.2.4Pycharm簡(jiǎn)介

Pycharm是PythonIDE,它是一個(gè)PythonIDE,具有在使用Python語(yǔ)言

開(kāi)發(fā)時(shí)提高效率的工具(例如語(yǔ)法突出顯示、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提

示、自動(dòng)完成、單元測(cè)試、版本控制等)。另外。此IDE提供高級(jí)功能,以支

持Django框架下的專業(yè)web開(kāi)發(fā)。還支持CoogleApp引擎,更重要的是,

PyCharm支持IronPython。IronPython是優(yōu)雅的Python編程語(yǔ)言和強(qiáng)大的。

是NET平臺(tái)的有機(jī)結(jié)合。這些功能通過(guò)高級(jí)代碼分析器支持,使PyCharm成為

Python專業(yè)開(kāi)發(fā)人員和新手使用的強(qiáng)大工具。

在“開(kāi)始”菜單中可以打開(kāi)PyCharm,然后看到的界面就是IDE開(kāi)發(fā)環(huán)境,

整個(gè)界面包括菜單欄、工具欄、文件導(dǎo)航區(qū)、程序編輯區(qū)、控制臺(tái)輸出區(qū)五個(gè)

部分,菜單欄包括PyCharm的所有菜單控制命令,工具欄用來(lái)對(duì)程序的運(yùn)行和

調(diào)試進(jìn)行控制,文件導(dǎo)航區(qū)對(duì)項(xiàng)目包含的文件、目錄進(jìn)行管理,包括創(chuàng)建、刪

除、重命名等,程序編輯區(qū)用來(lái)編寫(xiě)程序代碼,控制臺(tái)輸出區(qū)用來(lái)顯示程序運(yùn)

行的結(jié)果。

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

Python是一門(mén)面向?qū)ο蟮挠?jì)算機(jī)編程語(yǔ)言,它在數(shù)據(jù)采集、處理、分析與

可視化方面有著獨(dú)特的優(yōu)勢(shì),能夠幫助職場(chǎng)編程人員從容應(yīng)對(duì)大數(shù)據(jù)時(shí)代的挑

4

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

戰(zhàn)。本項(xiàng)目使用Python作為主要編程語(yǔ)言,通過(guò)編寫(xiě)代碼程序來(lái)達(dá)到數(shù)據(jù)采

集、數(shù)據(jù)清洗、數(shù)據(jù)處理、數(shù)據(jù)分析與數(shù)據(jù)可視化。在數(shù)據(jù)采集的過(guò)程中,分

析采集的網(wǎng)絡(luò)資源請(qǐng)求中發(fā)現(xiàn),請(qǐng)求的是一個(gè)被隱藏并且動(dòng)態(tài)加載的Json數(shù)

據(jù)源,需要觀察瀏覽器網(wǎng)絡(luò)資源列表中請(qǐng)求的參數(shù)規(guī)律,來(lái)完成變換請(qǐng)求

Header的參數(shù)而實(shí)現(xiàn)更換數(shù)據(jù)源,以達(dá)到批量獲取股票行情數(shù)據(jù),并調(diào)整數(shù)據(jù)

結(jié)構(gòu)和臨時(shí)存儲(chǔ)到csv中。之后,經(jīng)過(guò)數(shù)據(jù)清洗和預(yù)處理,便于后續(xù)數(shù)據(jù)調(diào)用

和數(shù)據(jù)可視化。最后一步,我們將會(huì)把確認(rèn)無(wú)誤的數(shù)據(jù)持久化存儲(chǔ)到Mysql。

上述為本項(xiàng)目的技術(shù)可行性,并且我將在后續(xù)的步驟過(guò)程中,不斷完善工

作內(nèi)容,確保項(xiàng)目能穩(wěn)定、不遺漏、有條不紊的完成。嚴(yán)格的保證項(xiàng)目的嚴(yán)謹(jǐn)

性,完整性和可行性。

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

投資股票是為了獲得更大的收益,但由于股市具有很大的動(dòng)態(tài)特性,股票

投資的收益和風(fēng)險(xiǎn)往往成正比,投資收益越高,存在的風(fēng)險(xiǎn)就越大。有效預(yù)測(cè)

股價(jià),最大限度地避免股票風(fēng)險(xiǎn),增加投資收益是股票投資者最關(guān)注的話題。

中國(guó)大陸市場(chǎng)有兩個(gè)證券交易場(chǎng)所:上海證券交易所和深圳證券交易所。

本次項(xiàng)目經(jīng)過(guò)采集上海交易所官網(wǎng)行情報(bào)表的股票數(shù)據(jù),以進(jìn)一步分析我國(guó)證

券交易市場(chǎng)股票信息。開(kāi)展對(duì)各上市公司股票的公司名稱、股票代碼、股票漲

跌(包括漲跌額和漲跌幅)、成交量、成交金額、最高價(jià)、最低價(jià)、收盤(pán)價(jià)、

開(kāi)盤(pán)價(jià)、換手率的不同數(shù)據(jù)源調(diào)查,從不同角度對(duì)股票進(jìn)行深度分析和數(shù)據(jù)挖

掘,得出有效信息,并通過(guò)數(shù)據(jù)可視化展示出結(jié)果得到定論,之后,對(duì)企業(yè)的

財(cái)務(wù)狀況、經(jīng)營(yíng)業(yè)績(jī)、發(fā)展趨勢(shì)、競(jìng)爭(zhēng)能力、管理能力的改善作為有力依據(jù)。

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

本次項(xiàng)目采集的數(shù)據(jù)源來(lái)自上海證券交易所,使用的是面向?qū)ο蟮木幊陶Z(yǔ)

言Python編寫(xiě)爬蟲(chóng)爬取上海證券交易所股票行情數(shù)據(jù)。數(shù)據(jù)清洗和預(yù)處理后

總共9990條數(shù)據(jù),盡量去除不需要的數(shù)據(jù),保證數(shù)據(jù)的準(zhǔn)確性和完整性,可

以確保采集的數(shù)據(jù)真實(shí)來(lái)自于上海證券交易所股票行情數(shù)據(jù),數(shù)據(jù)是最近的最

新數(shù)據(jù)。

上海證券交易所股票行情數(shù)據(jù)經(jīng)分析過(guò)后發(fā)現(xiàn)需要進(jìn)一步分析的列名包括

公司名稱、股票代碼、股票漲跌(包括漲跌額和漲跌幅)、成交量、成交金

額、最高價(jià)、最低價(jià)、收盤(pán)價(jià)、開(kāi)盤(pán)價(jià)、換手率,我們需要把各列名下的詳細(xì)

數(shù)據(jù)進(jìn)行整頓和處理,經(jīng)過(guò)預(yù)處理和數(shù)據(jù)清洗后,對(duì)數(shù)據(jù)從各個(gè)角度深度分

5

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

析、挖掘數(shù)據(jù)畫(huà)像的深度意義。不僅可以查看不同股份類(lèi)型的上市公司占市場(chǎng)

的持有率和股份占有率,而且還能分析不同類(lèi)型股份公司占有量變換,對(duì)股票

市場(chǎng)漲跌的分析,以及各企業(yè)未來(lái)股票增長(zhǎng)的趨勢(shì)預(yù)測(cè),還能對(duì)企業(yè)股票obv

增長(zhǎng)分析。

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

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

網(wǎng)絡(luò)爬蟲(chóng),也被稱為網(wǎng)絡(luò)機(jī)器人,能夠幫助并取代在互聯(lián)網(wǎng)上自動(dòng)收集和

組織數(shù)據(jù)的人。在大數(shù)據(jù)時(shí)代,信息收集是一項(xiàng)重要的任務(wù),例如在搜索引擎

中抓取和收集網(wǎng)站,在數(shù)據(jù)分析和挖掘中收集數(shù)據(jù),在財(cái)務(wù)分析中收集財(cái)務(wù)數(shù)

據(jù)。如果僅僅依靠人力資源來(lái)收集信息,不僅效率低下、操作煩瑣,還會(huì)增加

信息收集的成本。此時(shí),可以使用網(wǎng)絡(luò)爬蟲(chóng)來(lái)自動(dòng)收集數(shù)據(jù)和信息。此外,

Web爬蟲(chóng)還可以應(yīng)用于輿情監(jiān)測(cè)與分析、目標(biāo)客戶數(shù)據(jù)收集等領(lǐng)域。

當(dāng)前社會(huì)已經(jīng)邁入大數(shù)據(jù)時(shí)代,互聯(lián)網(wǎng)中的數(shù)據(jù)是海量的,如何自動(dòng)高效

地獲取互聯(lián)網(wǎng)中有用的信息是一個(gè)重要問(wèn)題,而網(wǎng)絡(luò)爬蟲(chóng)技術(shù)就是為解決這些

問(wèn)題而生的。

當(dāng)下的網(wǎng)絡(luò)就像一張大型的蜘蛛網(wǎng),分布于蜘蛛網(wǎng)各個(gè)節(jié)點(diǎn)的即是數(shù)據(jù),

那么WebCrawler(網(wǎng)絡(luò)爬蟲(chóng))即是小蜘蛛,沿著網(wǎng)絡(luò)“捕獲”食物(即數(shù)

據(jù)),而網(wǎng)絡(luò)爬蟲(chóng)是指按照一定的規(guī)則,自動(dòng)地抓取網(wǎng)絡(luò)信息的程序或者腳

本。從專業(yè)角度來(lái)講,請(qǐng)求目標(biāo)的行為是經(jīng)由程序模仿搜索引擎發(fā)出的,爬到

本地的是目標(biāo)返回的HTML代碼、JSON數(shù)據(jù)、二進(jìn)制數(shù)據(jù)、圖片、視頻等,從

中提取需要的數(shù)據(jù)并存儲(chǔ)起來(lái)使用。

對(duì)網(wǎng)絡(luò)爬蟲(chóng)狹義上的理解:利用標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議(如HTTP、HTTPS等),根

據(jù)網(wǎng)絡(luò)超鏈接和信息檢索方法(如深度優(yōu)先)遍歷網(wǎng)絡(luò)數(shù)據(jù)的軟件程序。

對(duì)網(wǎng)絡(luò)爬蟲(chóng)功能上的理解:確定待采集的URL隊(duì)列,獲取每個(gè)URL對(duì)應(yīng)的

網(wǎng)頁(yè)內(nèi)容(如HTML和JSON等),根據(jù)用戶要求解析網(wǎng)頁(yè)中的字段(如標(biāo)

題),并存儲(chǔ)解析得到的數(shù)據(jù)。

網(wǎng)絡(luò)爬蟲(chóng)技術(shù)在搜索引擎中扮演著信息采集器的角色,是搜索引擎模塊中

的最基礎(chǔ)的部分。例如,我們常用的搜索引擎Google、百度、必應(yīng)(Bing)都

采用網(wǎng)頁(yè)爬蟲(chóng)技術(shù)采集海量的互聯(lián)網(wǎng)數(shù)據(jù)。搜索引擎的大致結(jié)構(gòu)分為。第一

步,利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù)自動(dòng)化地采集互聯(lián)網(wǎng)中的網(wǎng)頁(yè)信息。第二步,存儲(chǔ)采集

的信息。在存儲(chǔ)過(guò)程中,往往需要檢測(cè)重復(fù)內(nèi)容,從而避免大量重復(fù)信息的采

6

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

集;同時(shí),網(wǎng)頁(yè)之間的鏈接關(guān)系也需要存儲(chǔ),原因是鏈接關(guān)系可用來(lái)計(jì)算網(wǎng)頁(yè)

內(nèi)容的重要性。第三步,數(shù)據(jù)預(yù)處理操作,即提取文字、分詞、消除噪音以及

鏈接關(guān)系計(jì)算等。第四步,對(duì)預(yù)處理的數(shù)據(jù)建立索引庫(kù),方便用戶快速查找,

常用的索引方法有后綴數(shù)組、簽名文件和倒排文。第五步,基于用戶檢索的內(nèi)

容(如用戶輸入的關(guān)鍵詞),搜索引擎從網(wǎng)頁(yè)索引庫(kù)中查找符合該關(guān)鍵詞的所

有網(wǎng)頁(yè)(結(jié)果集),通過(guò)對(duì)結(jié)果集的排序,將最相關(guān)的網(wǎng)頁(yè)返回給用戶。

另外,網(wǎng)絡(luò)爬蟲(chóng)在其他方面也發(fā)揮著重要作用。

大數(shù)據(jù)環(huán)境下輿情分析與監(jiān)測(cè):政府或企業(yè)基于網(wǎng)絡(luò)爬蟲(chóng)技術(shù),采集論壇

評(píng)論、在線博客、新聞媒體和微博等網(wǎng)站中的海量數(shù)據(jù),采用數(shù)據(jù)挖掘相關(guān)方

法(如實(shí)體識(shí)別、詞頻統(tǒng)計(jì)、文本情感計(jì)算、主題識(shí)別與演化等),發(fā)掘輿情

熱點(diǎn)、跟蹤目標(biāo)話題,并根據(jù)一定的標(biāo)準(zhǔn)采取相應(yīng)的輿情控制與引導(dǎo)措施。

大數(shù)據(jù)環(huán)境下的用戶分析:企業(yè)利用網(wǎng)絡(luò)爬蟲(chóng)技術(shù),采集用戶基本信息、

用戶對(duì)企業(yè)或商品的看法、觀點(diǎn)以及態(tài)度等數(shù)據(jù)、用戶之間的互動(dòng)信息等?;?/p>

于這些信息,企業(yè)可以對(duì)用戶進(jìn)行畫(huà)像,如用戶基本屬性畫(huà)像、用戶產(chǎn)品特征

畫(huà)像、用戶互動(dòng)特征畫(huà)像等,發(fā)掘用戶對(duì)產(chǎn)品的個(gè)性化偏好與需求。同樣,也

可分析企業(yè)自身產(chǎn)品的優(yōu)勢(shì)和顧客反饋情況等。

科研需求:針對(duì)網(wǎng)絡(luò)大數(shù)據(jù)驅(qū)動(dòng)、多源異構(gòu)數(shù)據(jù)驅(qū)動(dòng)的科學(xué)研究,必然涉

及網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù)。例如,針對(duì)網(wǎng)絡(luò)中的多源異構(gòu)數(shù)據(jù)(如數(shù)字、文本、圖

片和視頻等),如何更好地管理與存儲(chǔ)所采集的數(shù)據(jù)、如何進(jìn)行數(shù)據(jù)的過(guò)濾與

融合、如何對(duì)數(shù)據(jù)的可用性進(jìn)行評(píng)估、如何將數(shù)據(jù)應(yīng)用到商業(yè)分析中等,都是

目前研究的熱點(diǎn)問(wèn)題。

網(wǎng)絡(luò)爬蟲(chóng)按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可分為4類(lèi),即通用網(wǎng)絡(luò)爬蟲(chóng)、

聚焦網(wǎng)絡(luò)爬蟲(chóng)、增量網(wǎng)絡(luò)爬蟲(chóng)和深層網(wǎng)絡(luò)爬蟲(chóng)。

2.3.2文件存取技術(shù)

Python內(nèi)pandas模塊的功能轉(zhuǎn)存csv如圖2-1顯示:

圖2-1Python內(nèi)pandas模塊的功能轉(zhuǎn)存csv模塊

Python內(nèi)json模塊功能將json數(shù)據(jù)類(lèi)型轉(zhuǎn)換成python字典類(lèi)型如圖2-

2顯示:

7

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

圖2-2json模塊方法

2.3.3可視化技術(shù)

數(shù)據(jù)可視化是一種將龐雜抽象的數(shù)據(jù)轉(zhuǎn)化為直觀易懂的圖形的數(shù)據(jù)呈現(xiàn)技

術(shù),我們快速把握數(shù)據(jù)的分布和規(guī)律,更加輕松地理解和探索信息。在當(dāng)今這

個(gè)信息爆作的時(shí)代數(shù)據(jù)可視化越來(lái)越受重視。

第三方庫(kù)Pyecharts是由Python開(kāi)發(fā)的Echarts圖標(biāo)庫(kù)擴(kuò)展。豐富的圖

型,高度個(gè)性化、精美生動(dòng)、還能交互深受開(kāi)發(fā)人員喜愛(ài),因此他有廣大的用

戶群。

抓取的股票數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)清洗和數(shù)據(jù)處理,轉(zhuǎn)化為了我們想要的csv格式

存儲(chǔ)下來(lái)后。我們直接打開(kāi)數(shù)據(jù)集文件,無(wú)法直接獲取我們想要的指導(dǎo)思想和

得出理論。

所以我們需要對(duì)數(shù)據(jù)進(jìn)行操練,想要發(fā)揮或者挖掘出數(shù)據(jù)的價(jià)值,為我們

或者企業(yè)創(chuàng)造價(jià)值,由此,我們需要讓數(shù)據(jù)“動(dòng)”起來(lái)。這需要一門(mén)專業(yè)的技

術(shù),它就是數(shù)據(jù)可視化。有了它,我們就可以對(duì)不斷的增長(zhǎng)或者爆發(fā)的數(shù)據(jù)進(jìn)

行處理,將數(shù)據(jù)中包含的信息以生動(dòng)、直觀的方式展現(xiàn)出來(lái)。以更好的方法,

讓我們能不斷發(fā)現(xiàn)數(shù)據(jù)背后傳遞的思想和規(guī)律。為我們發(fā)表想法和實(shí)際做法提

供重要論點(diǎn)。

我們需要進(jìn)一步分析,比如對(duì)數(shù)據(jù)畫(huà)像,數(shù)據(jù)挖掘,數(shù)據(jù)畫(huà)圖。但是,可

視化的類(lèi)型分為科學(xué)可視化、信息可視化、可視分析學(xué)。我們?cè)撚媚膫€(gè)呢?

本次項(xiàng)目將以信息可視化的類(lèi)型進(jìn)行分析。信息可視化處理的是信息化的

數(shù)據(jù),比如對(duì)文本、數(shù)據(jù)庫(kù)文件、結(jié)構(gòu)化文件、非結(jié)構(gòu)化數(shù)據(jù)的分析。主要應(yīng)

用與數(shù)字化、金融、社交網(wǎng)絡(luò)、科學(xué)勘測(cè)、信息交互、生產(chǎn)制造等。它將會(huì)在

有限的空間直接傳遞批量的抽象信息。

8

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

本次項(xiàng)目在爬取上海證券交易所數(shù)據(jù),并以較為簡(jiǎn)單的方式去可視化,這

里采用的是pyecharts技術(shù),將我們需要提取規(guī)律和思想的數(shù)據(jù),繪制成優(yōu)美

的圖形,從而提高我們的工作效率。

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

3.1行情報(bào)表股票數(shù)據(jù)采集

3.1.1采集頁(yè)面分析

首先,我們使用谷歌瀏覽器搜索上海證券交易所關(guān)鍵字并訪問(wèn)官方網(wǎng)址,

之后找到股票行情報(bào)表頁(yè)面觀察如圖3-1,訪問(wèn)的URL為http://www。sse。

/market/price/report/再然后點(diǎn)擊頁(yè)面底部的分頁(yè)按鈕并觀察URL

如圖3-2所示,可以發(fā)現(xiàn)URL框無(wú)變化。

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

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

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

9

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

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

我們可以利用全局搜索工具定位所需數(shù)據(jù)位置,點(diǎn)擊開(kāi)發(fā)者工具Network

中請(qǐng)求頭部信息Header,發(fā)現(xiàn)響應(yīng)的真實(shí)URL,并分析資源請(qǐng)求的URL變化,

發(fā)現(xiàn)請(qǐng)求是一個(gè)GET請(qǐng)求,URL中發(fā)現(xiàn)begin和end分別是0和25,之后分別

以加25的方式變化,也可以在Payload的QueryStringParameters中找到

請(qǐng)求參數(shù),如圖3-4。

圖3-4QueryStringParameters

10

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

3.1.2字段分析

首先,我們需要篩選采集證券代碼,證券簡(jiǎn)稱,類(lèi)型,最新,漲跌幅,漲

跌,成交量(手),成交額(萬(wàn)元),前收,開(kāi)盤(pán),最高,最低這些字段,然后在

需要分析的網(wǎng)頁(yè)界面中選擇頁(yè)面元素字段,進(jìn)入元素模式,定位到我們需要的

數(shù)據(jù)的HTMLdom樹(shù)位置,接著跳轉(zhuǎn)開(kāi)發(fā)者工具頁(yè)面,點(diǎn)擊Network(網(wǎng)絡(luò)請(qǐng)求

資源),記得先清空網(wǎng)絡(luò)請(qǐng)求列表,之后刷新瀏覽器頁(yè)面,等待頁(yè)面加載完

成,再然后點(diǎn)擊開(kāi)發(fā)者工具中需要的數(shù)據(jù)請(qǐng)求的數(shù)據(jù)資源預(yù)覽Preview按鈕,

如圖3-5。我們可以發(fā)現(xiàn),返回的響應(yīng)數(shù)據(jù)顯示的結(jié)構(gòu)是一個(gè)類(lèi)似json的數(shù)據(jù)

類(lèi)型,前面的jsonpCallback是該網(wǎng)站數(shù)據(jù)請(qǐng)求并渲染js的json數(shù)據(jù)回調(diào)函

數(shù),需要獲取的數(shù)據(jù)在該函數(shù)中部,所以我們需要把它過(guò)濾掉,接著我們需

要把反復(fù)獲取到的類(lèi)json響應(yīng)數(shù)據(jù)按照原網(wǎng)頁(yè)所展示的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)到csv

中。

圖3-5分析數(shù)據(jù)類(lèi)型頁(yè)面

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

導(dǎo)入所需庫(kù),如圖3-6所示。

11

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

圖3-6導(dǎo)入所需庫(kù)頁(yè)面

設(shè)置請(qǐng)求頭,偽裝成瀏覽器訪問(wèn)服務(wù)器,如圖3-7所示。

圖3-7請(qǐng)求頭內(nèi)容頁(yè)面

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

#-*-codeing=utf-8-*-

importrequests

importtime

importrandom

importjson

importpandasaspd

defReguest_MutiData(first,second,all_date):#請(qǐng)求數(shù)據(jù)

header={

"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36

(KHTML,likeGecko)Chrome/Safari/537.36",

"Referer":"/",

"Connection":"keep-alive",

"Host":":32041",

"Cookie":"gdp_user_id=gioenc-

d210231d%2Cc2bb%2C5794%2C9816%2Cbgbc80abgb35;

ba17301551dcbaf9_gdp_session_id=817b954b-d0a0-4a8a-ab42-9c592f30facc;

yfx_c_g_u_id_10000042=_ck22102908584213657051659478152;

yfx_f_l_v_t_10000042=f_t_1667005122310__r_t_1667005122310__v_t_1667006159014__r_

c_0;ba17301551dcbaf9_gdp_session_id_817b954b-d0a0-4a8a-ab42-9c592f30facc=true"

}

url=

f":32041/v1/sh1/list/exchange/equity?select=code%2Cname%2Copen

%2Chigh%2Clow%2Clast%2Cprev_close%2Cchg_rate%2Cvolume%2Camount%2Ctradephas

12

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

e%2Cchange%2Camp_rate%2Ccpxxsubtype%2Ccpxxprodusta%2C&order=&begin={first}&e

nd={second}"

response=requests.get(url,headers=header)

Parse_MutiData(response,all_date)

defParse_MutiData(response,all_date):#數(shù)據(jù)解析

json_date=json.loads(response.content.decode("utf-8"))

'''"證券代碼","證券簡(jiǎn)稱","類(lèi)型","最新","漲跌幅","漲跌","成交量(手)","成交額(萬(wàn)元)",

"前收","開(kāi)盤(pán)","最高","最低"'''

list_date=json_date['list']

forjinrange(len(list_date)):

row_list=[list_date[j][0],

list_date[j][1],

'主板%s股'%list_date[j][-2][:1],

list_date[j][5],

('%.2f'%float(list_date[j][7]))+"%",

list_date[j][-4],

list_date[j][-7]//100,

format(float(list_date[j][-6])/float(10000),".2f"),

'%.2f'%float(list_date[j][6]),

'%.2f'%float(list_date[j][2]),

'%.2f'%float(list_date[j][3]),

'%.2f'%float(list_date[j][4])]

all_date.append(row_list)

defSave_Mutidatasto_Csv(all_date):#數(shù)據(jù)存儲(chǔ)

header_list=["證券代碼","證券簡(jiǎn)稱","類(lèi)型","最新","漲跌幅","漲跌","成交量(手)",

"成交額(萬(wàn)元)","前收","開(kāi)盤(pán)","最高","最低"]

df=pd.DataFrame(all_date,index=None,columns=header_list)

print(df)

df.to_csv("./行情報(bào)表1.csv",encoding="utf-8",index=False)

if__name__=='__main__':

#程序調(diào)用主入口

all_date=[]

foriinrange(0,88):

first=i*25

second=(i+1)*25

Reguest_MutiData(first,second=second,all_date=all_date)

sleep_time=random.randint(2,5)

time.sleep(sleep_time)

Save_Mutidatasto_Csv(all_date)

13

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

3.2歷史股票數(shù)據(jù)采集

3.2.1采集頁(yè)面分析

首先,我們?cè)讷@取行情報(bào)表的基礎(chǔ)上同樣使用谷歌瀏覽器搜索上海證券交

易所關(guān)鍵字并訪問(wèn)官方網(wǎng)址,之后找到股票行情報(bào)表頁(yè)面觀察,訪問(wèn)的URL為

/market/price/trends/,按F12調(diào)出開(kāi)發(fā)者工具,

刷新頁(yè)面,如圖3-8。

圖3-8數(shù)據(jù)網(wǎng)址頁(yè)面以及F12調(diào)出開(kāi)發(fā)者工具后的頁(yè)面

圖3-9請(qǐng)求Header

14

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

我們可以利用全局搜索工具定位所需數(shù)據(jù)位置,點(diǎn)擊開(kāi)發(fā)者工具Network

中請(qǐng)求頭部信息Header,發(fā)現(xiàn)響應(yīng)的真實(shí)URL為。

cn:32041/v1/sh1/dayk/600000?callback=jQuery112405018621156169807_167

6096099713&begin=-1000&end=-1&period=day&_=1676096099725,如圖3-9。

并分析資源請(qǐng)求的URL變化,發(fā)現(xiàn)請(qǐng)求是一個(gè)GET請(qǐng)求,URL地址中的請(qǐng)求參

數(shù)股票代碼為我們上一次采集綜合一中存儲(chǔ)的行情報(bào)表中的股票代碼。也可以

在Payload的QueryStringParameters中找到請(qǐng)求參數(shù),如圖3-10。

圖3-10QueryStringParameters

3.2.2字段分析

首先,我們需要分析并篩選采集證卷代碼,日期,看盤(pán),最高,最低,收

盤(pán),成交量,成交額這些字段,然后在需要分析的網(wǎng)頁(yè)界面中選擇頁(yè)面元素字

段,進(jìn)入元素模式,定位到我們需要的數(shù)據(jù)的HTMLdom樹(shù)位置,接著跳轉(zhuǎn)開(kāi)

發(fā)者工具頁(yè)面,點(diǎn)擊Network(網(wǎng)絡(luò)請(qǐng)求資源),記得先清空網(wǎng)絡(luò)請(qǐng)求列表,之

后刷新瀏覽器頁(yè)面,等待頁(yè)面加載完成,再然后點(diǎn)擊開(kāi)發(fā)者工具中需要的數(shù)據(jù)

請(qǐng)求的數(shù)據(jù)資源預(yù)覽Preview按鈕,如圖3-11。我們可以發(fā)現(xiàn),返回的響應(yīng)

數(shù)據(jù)顯示的結(jié)構(gòu)是一個(gè)類(lèi)似json的數(shù)據(jù)類(lèi)型,前面的jsonpCallback是該網(wǎng)

站數(shù)據(jù)請(qǐng)求并渲染js的json數(shù)據(jù)回調(diào)函數(shù),需要獲取的數(shù)據(jù)在該函數(shù)中部,

所以我們需要把它過(guò)濾掉,接著我們需要把反復(fù)獲取到的類(lèi)json響應(yīng)數(shù)據(jù)按

15

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

照原網(wǎng)頁(yè)所展示的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)到csv中。

圖3-11分析數(shù)據(jù)類(lèi)型頁(yè)面

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

導(dǎo)入所需庫(kù),如圖3-12所示。

圖3-12導(dǎo)入所需庫(kù)頁(yè)面

設(shè)置請(qǐng)求頭,偽裝成瀏覽器訪問(wèn)服務(wù)器,如圖3-13所示。

圖3-13請(qǐng)求頭內(nèi)容頁(yè)面

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

#-*-codeing=utf-8-*-

importrequests

importre

16

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

importjson

importpandasaspd

importtime

importrandom

defReguest_MutiData(code):#請(qǐng)求數(shù)據(jù)

#獲取歷史行情數(shù)據(jù)

url=

f":32041/v1/sh1/dayk/{code}?callback=jQuery1124089377334828398

65_1667022937982&begin=-1000&end=-1&period=day"

headers={

"Connection":"keep-alive",

"Host":":32041",

"Referer":"/",

"Cookie":"gdp_user_id=gioenc-

71d6ga89%2C852a%2C54ab%2Ca1c0%2Cbed2e6b32c00;

yfx_c_g_u_id_10000042=_ck22102813350315506242978687619;

yfx_mr_10000042=%3A%3Amarket_type_free_search%3A%3A%3A%3Abaidu%3A%3A%3

A%3A%3A%3A%3A%3A%3A%3A%3A%3Apmf_from_free_search;

yfx_mr_f_10000042=%3A%3Amarket_type_free_search%3A%3A%3A%3Abaidu%3A%3A

%3A%3A%3A%3A%3A%3A%3A%3A%3A%3Apmf_from_free_search;

yfx_key_10000042=;ba17301551dcbaf9_gdp_session_id=bd8b8f89-8e7f-4ce7-86b5-

f9f5427421c1;

yfx_f_l_v_t_10000042=f_t_1666935303507__r_t_1667016625630__v_t_1667022894516__r_

c_1;ba17301551dcbaf9_gdp_session_id_bd8b8f89-8e7f-4ce7-86b5-f9f5427421c1=true",

"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36

(KHTML,likeGecko)Chrome/Safari/537.36",

}

response=requests.get(url,headers=headers)

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

Parse_MutiData(html)

defParse_MutiData(html):#數(shù)據(jù)解析

pattern=pile('(?<=jQuery112408937733482839865_1667022937982\().*(?=\))',

flags=re.DOTALL)

json_data=re.findall(pattern,html)[0]

all_kline_list=json.loads(json_data)['kline']

all_kline_list1=[[json.loads(json_data)['code']]+iforiinall_kline_list]

Save_Mutidatasto_Csv(all_kline_list1)

defSave_Mutidatasto_Csv(all_kline_list1):#數(shù)據(jù)存儲(chǔ)

kline_dataframe=pd.DataFrame(all_kline_list1,index=None,

columns=['證卷代碼','日期','看盤(pán)','最高','最低','

17

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

收盤(pán)','成交量','成交額'])

kline_dataframe.to_csv("E:\pythonProject1\chef4\Shanghaizhengjuan\date.csv",

columns=['證卷代碼','日期','看盤(pán)','最高','最低','收盤(pán)','成

交量','成交額'],index=False,mode="a+",

encoding='utf-8')

if__name__=='__main__':#程序調(diào)用主入口

hangqing_table_df=pd.read_csv('../Shanghaizhengjuan/行情報(bào)表.csv',header=0)

df2=pd.concat([hangqing_table_df['證券代碼'].head(),hangqing_table_df['證券代碼

'].tail()],axis=0)

forcodeindf2:

Reguest_MutiData(code)

n=random.randint(2,3)

time.sleep(n)

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

當(dāng)我們得到了大量的數(shù)據(jù)后,面對(duì)繁雜的數(shù)據(jù)甚至可能無(wú)從下手,因?yàn)榘l(fā)

獲取到的數(shù)據(jù)結(jié)構(gòu)有點(diǎn)亂,數(shù)據(jù)中存在缺失值、重復(fù)值、無(wú)效值、空值,此

時(shí),需要檢查數(shù)據(jù)的一致性了,把“臟”數(shù)據(jù)剔除,此時(shí)需要處理缺失值、重

復(fù)值、無(wú)效值和空值。這能有效保證數(shù)據(jù)的質(zhì)量達(dá)標(biāo)和降低數(shù)據(jù)錯(cuò)誤率。

本次項(xiàng)目獲取到的數(shù)據(jù)集結(jié)構(gòu)經(jīng)過(guò)調(diào)整并序列化后,與原網(wǎng)頁(yè)數(shù)據(jù)結(jié)構(gòu)比

對(duì),可以基本上一一對(duì)應(yīng)。但是仍會(huì)有缺失值和無(wú)效值等,我們可以通過(guò)計(jì)算

機(jī)的幫助和人工手動(dòng)剔除不需要的數(shù)據(jù)或者填寫(xiě)缺失值。之后對(duì)數(shù)據(jù)的進(jìn)行按

索引排序,確保數(shù)據(jù)的規(guī)范和一致性。

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

讀取行情數(shù)據(jù)如下圖4-1和4-2所示。

18

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

圖4-1行情報(bào)表股票數(shù)據(jù)清洗頁(yè)面

圖4-2歷史股票數(shù)據(jù)清洗頁(yè)面

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

將有效數(shù)據(jù)統(tǒng)一規(guī)劃去掉不要的行列數(shù)據(jù),防止數(shù)據(jù)冗余。因此我們只需保留

需要的數(shù)據(jù),然后整理為原網(wǎng)頁(yè)格式存入data。csv文件中,留存后續(xù)作為統(tǒng)計(jì)

分析、可視化使用。

19

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

圖4-3數(shù)據(jù)清洗完成界面

圖4-4數(shù)據(jù)清洗完成界面二

清洗后如圖4-3和4-4所示。

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

數(shù)據(jù)存儲(chǔ)是保留以后可能會(huì)使用到的數(shù)據(jù)的有效方式,它可以分為本地存

儲(chǔ)和網(wǎng)絡(luò)存儲(chǔ),本項(xiàng)目使用的是本地存儲(chǔ),本地存儲(chǔ)包括很多種方式和格式,

經(jīng)??梢?jiàn)的有數(shù)據(jù)結(jié)構(gòu)規(guī)范的結(jié)構(gòu)化數(shù)據(jù)格式(如json、csv、excel)和非結(jié)

構(gòu)化數(shù)據(jù)格式(圖像),非結(jié)構(gòu)化數(shù)據(jù)中常見(jiàn)的一大類(lèi)文本格式存儲(chǔ)(如記事

20

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

本,word,html)。如果需要存儲(chǔ)的數(shù)據(jù)體積不大,以上列舉的常用幾種方式

基本上可以滿足需求,但是當(dāng)需要存儲(chǔ)的數(shù)據(jù)量非常大時(shí),上述方式存儲(chǔ)和讀

取數(shù)據(jù)的效率就會(huì)很低,此時(shí)我們可以更換數(shù)據(jù)的存儲(chǔ)方式來(lái)提高計(jì)算機(jī)工作

效率,比如:數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)按照類(lèi)型可分為關(guān)系型數(shù)據(jù)庫(kù)與非關(guān)系型數(shù)據(jù)

庫(kù)。常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)有Mysql、Oracle、SQLServer等,非關(guān)系型數(shù)據(jù)庫(kù)

有MongoDB、Redis等。關(guān)系型數(shù)據(jù)庫(kù)在事務(wù)上大多都有一定的關(guān)系或者聯(lián)

系,而非關(guān)系型數(shù)據(jù)庫(kù)在事務(wù)上都沒(méi)有絕對(duì)的關(guān)系。本次存儲(chǔ)項(xiàng)目文件采用的

是小型數(shù)據(jù)庫(kù)Mysql和csv,如圖4-5、圖4-6和圖4-7所示。

圖4-5數(shù)據(jù)存儲(chǔ)為csv頁(yè)面

圖4-6數(shù)據(jù)存儲(chǔ)MySQL頁(yè)面

圖4-7數(shù)據(jù)存儲(chǔ)MySQL頁(yè)面二

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

創(chuàng)建數(shù)據(jù)庫(kù),并且設(shè)定字符集編碼為utf8,如圖4-8所示。

21

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

圖4-8創(chuàng)建MySQL數(shù)據(jù)庫(kù)并設(shè)定字符集編碼

導(dǎo)入本地行情報(bào)表,csv表格數(shù)據(jù),如圖4-9和圖4-10所示。

22

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

圖4-9導(dǎo)入本地csv文件數(shù)據(jù)到數(shù)據(jù)庫(kù)中

圖4-10csv文件數(shù)據(jù)成功導(dǎo)入到數(shù)據(jù)庫(kù)中

驗(yàn)證存入數(shù)據(jù)是否正確,如圖4-11所示。

圖4-11驗(yàn)證Mysql數(shù)據(jù)一

同理再次驗(yàn)證,如圖4-12所示。

23

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

圖4-12驗(yàn)證Mysql數(shù)據(jù)二

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

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

導(dǎo)入需要的相關(guān)庫(kù),使用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論