版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025民間個(gè)人向個(gè)人借款合同
- 2025年度知識(shí)產(chǎn)權(quán)保密協(xié)議范本(含研發(fā)成果)3篇
- 二零二五年度科技園區(qū)銀行貸款擔(dān)保協(xié)議2篇
- 2025年度農(nóng)村自建房合同協(xié)議書(shū)(含空氣源熱泵安裝)
- 二零二五年度農(nóng)業(yè)現(xiàn)代化農(nóng)村土地承包經(jīng)營(yíng)權(quán)租賃協(xié)議
- 二零二五年度特種設(shè)備制造許可證轉(zhuǎn)讓合同3篇
- 2025年度飼料行業(yè)人才培養(yǎng)合作協(xié)議詳盡版3篇
- 二零二五年度XX教育機(jī)構(gòu)收取管理費(fèi)服務(wù)協(xié)議3篇
- 2025年二零二五企業(yè)研發(fā)基地場(chǎng)地租賃合作協(xié)議3篇
- 2025年度碼頭租賃及集裝箱裝卸業(yè)務(wù)一體化合作協(xié)議3篇
- 2024年01月北京房山滬農(nóng)商村鎮(zhèn)銀行2024招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年度寵物用品銷(xiāo)售代理合同范本3篇
- 湖南2025年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院招聘35人歷年參考題庫(kù)(頻考版)含答案解析
- 部隊(duì)物業(yè)服務(wù)投標(biāo)方案
- 2024北京海淀五年級(jí)(上)期末英語(yǔ)(教師版)
- 銷(xiāo)售單 代合同范例
- 期末模擬卷 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè)(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 《比特幣完整介紹》課件
- 江蘇省2023年生物小高考試題含答案解析
- 邊坡土壓力計(jì)算(主動(dòng)土壓力法)
評(píng)論
0/150
提交評(píng)論