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

下載本文檔

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

文檔簡介

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

目錄

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

1.1項目背景......................................................................................................1

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

1.2.1Python簡介..........................................................................................2

1.2.2MySQL簡介............................................................................................3

1.2.3JypyterLab簡介..................................................................................3

1.2.4Pycharm簡介........................................................................................4

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

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

2.2采集目標功能分析......................................................................................5

2.3關鍵技術分析..............................................................................................6

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

2.3.2文件存取技術.......................................................................................7

2.3.3可視化技術...........................................................................................8

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

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

3.1.1采集頁面分析.......................................................................................9

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

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

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

3.2.1采集頁面分析.....................................................................................13

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

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

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

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

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

I

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

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

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

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

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

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

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

5.2.3據(jù)公司簡稱數(shù)量分類進行統(tǒng)計和分析.............................................28

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

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

6小結..........................................................................................................................30

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

II

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

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

據(jù)采集與分析

1引言

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

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

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

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

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

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

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

過程中不斷進步和改善。

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

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

在大數(shù)據(jù)平臺上存儲了足夠多的數(shù)據(jù),就必須對其進行分析,并利用分析結果

來做出決策。預測性分析是大數(shù)據(jù)分析的一種常見模式,它分析收集的數(shù)據(jù)以

預測未來行為或趨勢。通過根據(jù)事物的過去和現(xiàn)在來估計未來,根據(jù)已知來預

測未知,可以減少對未來事物理解的不確定性,指導決策行為,減少決策的盲

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

內(nèi)在關系。

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

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

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

自數(shù)據(jù)采集。那么,高效的數(shù)據(jù)采集離不開網(wǎng)絡爬蟲。

1.1項目背景

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

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

使用它將會給決策者獲得詳細和獨到的洞察力。

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

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

1

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

值、公司利潤等信息也很重要。

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

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

察公司經(jīng)營情況、統(tǒng)計公司資金流動、看清市場行情并做出有利決策等關系到

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

票代碼的詳細信息,所以我們可以訪問上海證券交易所查詢相關資料。

網(wǎng)頁中涉及到的上市公司股票代碼很多,數(shù)據(jù)結構較為復雜,我們可以對

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

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

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

因數(shù)的防控,對可利用因數(shù)的掌握,并有效促進和推動公司未來發(fā)展。我們需

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

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

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

策,公司當前面臨的技術、資金、人員的一系列問題,以及當前形勢下公司各

領域的優(yōu)勢,對該行業(yè)公司經(jīng)營情況做出正確的決策,從而規(guī)避投資風險,達

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

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

可視化。

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

1.2.1Python簡介

Python是一種易于學習又功能強大的編程語言。它提供了高效的高級數(shù)

據(jù)結構,還能簡單有效地面向?qū)ο缶幊?。Python優(yōu)雅的語法和動態(tài)類型,以

及解釋型語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應用的理想語

言。

Python解釋器及豐富的標準庫,提供了適用于各個主要系統(tǒng)平臺的源碼

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

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

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

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

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

2

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

展程序語言。

Python語言擁有強大的“膠水”功能可以把多種不同語言編寫的程序融合

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

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

據(jù)分析、Web前端開發(fā)、統(tǒng)計分析、移動終端開發(fā)、科學計算、系統(tǒng)運維、人

工智能、機器學習、密碼學、計算機輔助教學等幾乎所有專業(yè)和領域,在黑客

領域更是多年來一直擁有霸主地位。

本項目使用的是python3.9

1.2.2MySQL簡介

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

該實現(xiàn)方式是相對于通過文件等保存數(shù)據(jù)的方式來描述的。通過數(shù)據(jù)庫使數(shù)據(jù)

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

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

MySQL數(shù)據(jù)庫的標志是一個可愛的小海豚,它象征著這個數(shù)據(jù)庫的讀取、存

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

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

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

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

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

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

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

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

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

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

員對其進行操作。

1.2.3JypyterLab簡介

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

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

工作流程。一個模塊化的設計邀請了一些擴展來擴展和豐富功能。

Python第三方庫簡介:

Pandas庫提供了工具用來分析結構化數(shù)據(jù),它能用來數(shù)據(jù)分析、數(shù)據(jù)清洗

3

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

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

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

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

Time庫Python處理時間的模塊

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

Re庫Python使用正則表達式的拓展庫

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

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

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

Requests庫Python內(nèi)置了requests模塊,該模塊主要用來發(fā)送HTTP請

求,requests模塊比urllib模塊更簡潔。

1.2.4Pycharm簡介

Pycharm是PythonIDE,它是一個PythonIDE,具有在使用Python語言

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

示、自動完成、單元測試、版本控制等)。另外。此IDE提供高級功能,以支

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

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

是NET平臺的有機結合。這些功能通過高級代碼分析器支持,使PyCharm成為

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

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

整個界面包括菜單欄、工具欄、文件導航區(qū)、程序編輯區(qū)、控制臺輸出區(qū)五個

部分,菜單欄包括PyCharm的所有菜單控制命令,工具欄用來對程序的運行和

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

除、重命名等,程序編輯區(qū)用來編寫程序代碼,控制臺輸出區(qū)用來顯示程序運

行的結果。

2需求分析

2.1可行性需求分析

1、技術可行性

Python是一門面向?qū)ο蟮挠嬎銠C編程語言,它在數(shù)據(jù)采集、處理、分析與

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

4

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

戰(zhàn)。本項目使用Python作為主要編程語言,通過編寫代碼程序來達到數(shù)據(jù)采

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

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

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

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

結構和臨時存儲到csv中。之后,經(jīng)過數(shù)據(jù)清洗和預處理,便于后續(xù)數(shù)據(jù)調(diào)用

和數(shù)據(jù)可視化。最后一步,我們將會把確認無誤的數(shù)據(jù)持久化存儲到Mysql。

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

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

性,完整性和可行性。

2、項目可行性

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

投資的收益和風險往往成正比,投資收益越高,存在的風險就越大。有效預測

股價,最大限度地避免股票風險,增加投資收益是股票投資者最關注的話題。

中國大陸市場有兩個證券交易場所:上海證券交易所和深圳證券交易所。

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

券交易市場股票信息。開展對各上市公司股票的公司名稱、股票代碼、股票漲

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

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

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

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

2.2采集目標功能分析

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

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

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

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

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

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

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

額、最高價、最低價、收盤價、開盤價、換手率,我們需要把各列名下的詳細

數(shù)據(jù)進行整頓和處理,經(jīng)過預處理和數(shù)據(jù)清洗后,對數(shù)據(jù)從各個角度深度分

5

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

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

的持有率和股份占有率,而且還能分析不同類型股份公司占有量變換,對股票

市場漲跌的分析,以及各企業(yè)未來股票增長的趨勢預測,還能對企業(yè)股票obv

增長分析。

2.3關鍵技術分析

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

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

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

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

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

信息收集的成本。此時,可以使用網(wǎng)絡爬蟲來自動收集數(shù)據(jù)和信息。此外,

Web爬蟲還可以應用于輿情監(jiān)測與分析、目標客戶數(shù)據(jù)收集等領域。

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

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

問題而生的。

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

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

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

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

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

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

對網(wǎng)絡爬蟲狹義上的理解:利用標準網(wǎng)絡協(xié)議(如HTTP、HTTPS等),根

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

對網(wǎng)絡爬蟲功能上的理解:確定待采集的URL隊列,獲取每個URL對應的

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

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

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

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

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

步,利用網(wǎng)絡爬蟲技術自動化地采集互聯(lián)網(wǎng)中的網(wǎng)頁信息。第二步,存儲采集

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

6

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

集;同時,網(wǎng)頁之間的鏈接關系也需要存儲,原因是鏈接關系可用來計算網(wǎng)頁

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

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

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

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

有網(wǎng)頁(結果集),通過對結果集的排序,將最相關的網(wǎng)頁返回給用戶。

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

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

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

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

熱點、跟蹤目標話題,并根據(jù)一定的標準采取相應的輿情控制與引導措施。

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

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

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

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

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

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

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

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

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

目前研究的熱點問題。

網(wǎng)絡爬蟲按照系統(tǒng)結構和實現(xiàn)技術,大致可分為4類,即通用網(wǎng)絡爬蟲、

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

2.3.2文件存取技術

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

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

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

2顯示:

7

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

圖2-2json模塊方法

2.3.3可視化技術

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

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

個信息爆作的時代數(shù)據(jù)可視化越來越受重視。

第三方庫Pyecharts是由Python開發(fā)的Echarts圖標庫擴展。豐富的圖

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

戶群。

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

存儲下來后。我們直接打開數(shù)據(jù)集文件,無法直接獲取我們想要的指導思想和

得出理論。

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

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

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

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

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

供重要論點。

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

視化的類型分為科學可視化、信息可視化、可視分析學。我們該用哪個呢?

本次項目將以信息可視化的類型進行分析。信息可視化處理的是信息化的

數(shù)據(jù),比如對文本、數(shù)據(jù)庫文件、結構化文件、非結構化數(shù)據(jù)的分析。主要應

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

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

8

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

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

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

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

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

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

3.1.1采集頁面分析

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

之后找到股票行情報表頁面觀察如圖3-1,訪問的URL為http://www。sse。

/market/price/report/再然后點擊頁面底部的分頁按鈕并觀察URL

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

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

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

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

9

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

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

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

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

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

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

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

圖3-4QueryStringParameters

10

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

3.1.2字段分析

首先,我們需要篩選采集證券代碼,證券簡稱,類型,最新,漲跌幅,漲

跌,成交量(手),成交額(萬元),前收,開盤,最高,最低這些字段,然后在

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

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

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

成,再然后點擊開發(fā)者工具中需要的數(shù)據(jù)請求的數(shù)據(jù)資源預覽Preview按鈕,

如圖3-5。我們可以發(fā)現(xiàn),返回的響應數(shù)據(jù)顯示的結構是一個類似json的數(shù)據(jù)

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

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

要把反復獲取到的類json響應數(shù)據(jù)按照原網(wǎng)頁所展示的數(shù)據(jù)結構存儲到csv

中。

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

3.1.3編程實現(xiàn)

導入所需庫,如圖3-6所示。

11

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

圖3-6導入所需庫頁面

設置請求頭,偽裝成瀏覽器訪問服務器,如圖3-7所示。

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

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

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

importrequests

importtime

importrandom

importjson

importpandasaspd

defReguest_MutiData(first,second,all_date):#請求數(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

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

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

'''"證券代碼","證券簡稱","類型","最新","漲跌幅","漲跌","成交量(手)","成交額(萬元)",

"前收","開盤","最高","最低"'''

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ù)存儲

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

"成交額(萬元)","前收","開盤","最高","最低"]

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

print(df)

df.to_csv("./行情報表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

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

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

3.2.1采集頁面分析

首先,我們在獲取行情報表的基礎上同樣使用谷歌瀏覽器搜索上海證券交

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

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

刷新頁面,如圖3-8。

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

圖3-9請求Header

14

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

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

中請求頭部信息Header,發(fā)現(xiàn)響應的真實URL為。

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

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

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

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

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

圖3-10QueryStringParameters

3.2.2字段分析

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

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

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

發(fā)者工具頁面,點擊Network(網(wǎng)絡請求資源),記得先清空網(wǎng)絡請求列表,之

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

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

數(shù)據(jù)顯示的結構是一個類似json的數(shù)據(jù)類型,前面的jsonpCallback是該網(wǎng)

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

所以我們需要把它過濾掉,接著我們需要把反復獲取到的類json響應數(shù)據(jù)按

15

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

照原網(wǎng)頁所展示的數(shù)據(jù)結構存儲到csv中。

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

3.2.3編程實現(xiàn)

導入所需庫,如圖3-12所示。

圖3-12導入所需庫頁面

設置請求頭,偽裝成瀏覽器訪問服務器,如圖3-13所示。

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

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

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

importrequests

importre

16

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

importjson

importpandasaspd

importtime

importrandom

defReguest_MutiData(code):#請求數(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ù)存儲

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

columns=['證卷代碼','日期','看盤','最高','最低','

17

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

收盤','成交量','成交額'])

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

columns=['證卷代碼','日期','看盤','最高','最低','收盤','成

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

encoding='utf-8')

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

hangqing_table_df=pd.read_csv('../Shanghaizhengjuan/行情報表.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ù)清洗與處理

當我們得到了大量的數(shù)據(jù)后,面對繁雜的數(shù)據(jù)甚至可能無從下手,因為發(fā)

獲取到的數(shù)據(jù)結構有點亂,數(shù)據(jù)中存在缺失值、重復值、無效值、空值,此

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

復值、無效值和空值。這能有效保證數(shù)據(jù)的質(zhì)量達標和降低數(shù)據(jù)錯誤率。

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

對,可以基本上一一對應。但是仍會有缺失值和無效值等,我們可以通過計算

機的幫助和人工手動剔除不需要的數(shù)據(jù)或者填寫缺失值。之后對數(shù)據(jù)的進行按

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

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

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

18

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

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

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

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

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

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

分析、可視化使用。

19

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

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

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

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

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

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

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

經(jīng)??梢姷挠袛?shù)據(jù)結構規(guī)范的結構化數(shù)據(jù)格式(如json、csv、excel)和非結

構化數(shù)據(jù)格式(圖像),非結構化數(shù)據(jù)中常見的一大類文本格式存儲(如記事

20

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

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

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

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

效率,比如:數(shù)據(jù)庫。數(shù)據(jù)庫按照類型可分為關系型數(shù)據(jù)庫與非關系型數(shù)據(jù)

庫。常見的關系型數(shù)據(jù)庫有Mysql、Oracle、SQLServer等,非關系型數(shù)據(jù)庫

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

系,而非關系型數(shù)據(jù)庫在事務上都沒有絕對的關系。本次存儲項目文件采用的

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

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

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

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

4.3編程實現(xiàn)

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

21

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

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

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

22

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

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

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

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

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

同理再次驗證,如圖4-12所示。

23

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

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

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

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

導入需要的相關庫,使用

溫馨提示

  • 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

提交評論