基于python的上海证券交易所证券网站股票数据采集与分析_第1页
基于python的上海证券交易所证券网站股票数据采集与分析_第2页
基于python的上海证券交易所证券网站股票数据采集与分析_第3页
基于python的上海证券交易所证券网站股票数据采集与分析_第4页
基于python的上海证券交易所证券网站股票数据采集与分析_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

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

1.1项目背景......................................................................................................1

1.2开发环境与工具..........................................................................................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网络爬虫技术.......................................................................................6

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

2.3.3可视化技术...........................................................................................8

3数据采集....................................................................................................................9

3.1采集综合一..................................................................................................9

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

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

3.1.3编程实现.............................................................................................11

3.2采集综合二—获取历史股票数据................................................................13

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

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

3.2.3编程实现.............................................................................................16

4数据清洗与处理......................................................................................................18

4.1数据清洗....................................................................................................18

4.2数据储存....................................................................................................20

I

湖南商务职业技术学院毕业设计

4.3编程实现....................................................................................................21

5数据统计与分析......................................................................................................24

5.1数据准备....................................................................................................24

5.2数据展示....................................................................................................25

5.2.1依据股票上市公司的成交额进行统计.............................................25

5.2.2依据股市开盘、收盘、最高、最低、成交量和成交额进行统计.26

5.2.3据公司简称数量分类进行统计和分析.............................................28

5.2.4依据股票OBV数值进行统计.............................................................29

5.3综述............................................................................................................29

6小结..........................................................................................................................30

参考资料.........................................................................................................................31

II

湖南商务职业技术学院毕业设计

基于python的上海证券交易所证券网站股票数

据采集与分析

1引言

从上个时代开始,政府和各个领域(如医疗、互联网、金融、电信)的信息

化得到了快速发展,积累了庞大数据。非结构化数据占到了87%。这些数据由

国内来存储,他们有充足的硬件设备,但是,这些海量数据如何才能产生最大

的商业价值?仍是一个巨大的挑战。接着,基于数据的快速增长,越来越大的

数据量需要存储,这些数据很难被传统的数据库或数据仓库存储、管理、查询

和分析,海量数据如何分布式存储和分析是第二个巨大的挑战。应对这两大挑

战,大数据(BigData)的观念及其技术就由此而生,并在解决这两大挑战的

过程中不断进步和改善。

单纯的技术和单独的理念都不是大数据,而是一套技术和整体的概念,它

还是一个生态圈。仅有大数据是不够的,那么你如何使用大数据平台?一旦你

在大数据平台上存储了足够多的数据,就必须对其进行分析,并利用分析结果

来做出决策。预测性分析是大数据分析的一种常见模式,它分析收集的数据以

预测未来行为或趋势。通过根据事物的过去和现在来估计未来,根据已知来预

测未知,可以减少对未来事物理解的不确定性,指导决策行为,减少决策的盲

目性。除了预测性分析,还有相关性分析。关联分析的目标是识别数据之间的

内在关系。

大数据时代来到了我们身边,网络爬虫技术已成为我们生活中经常用来解

决数据量不够、数据不够丰富、数据不够简练等问题。公司对用户的客观行

为、研发产品的缺点和比赛对手的消息分析最缺的是什么?是数据,它们都来

自数据采集。那么,高效的数据采集离不开网络爬虫。

1.1项目背景

现在有一个重要的学科金融和数据分析正在快速发展,它的应用可以是实

时分析。它的应用技术包括数据处理、科技、简练的算法、分析方法和软件,

使用它将会给决策者获得详细和独到的洞察力。

一家大型的股票或者证券上市公司的固定资产绝对不限于他们的楼房和股

票,它的经营能力、社会生产技术、培养的高薪技术人才等信息创造的社会价

1

湖南商务职业技术学院毕业设计

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

对于一家各行业上市公司而言,它作为股份有限公司的特殊部分,在公开

发布股票以及达到需要满足的规模后,才能依法进行证券市场交易。所以,观

察公司经营情况、统计公司资金流动、看清市场行情并做出有利决策等关系到

公司可持续发展的重要决策。为进一步了解情况,就需要获取各上市公司的股

票代码的详细信息,所以我们可以访问上海证券交易所查询相关资料。

网页中涉及到的上市公司股票代码很多,数据结构较为复杂,我们可以对

该网页进行多次层次分析,并解析。接着使用Python爬虫获取并存储我们需

要的数据。

我的毕业设计就是满足对不同的股票上市公司经营的决策需要,对不可控

因数的防控,对可利用因数的掌握,并有效促进和推动公司未来发展。我们需

要爬取上海证券交易所的已公布的公司数据,对其数据清洗,数据存储,数据

分析和数据可视化。大量的数据经过上述处理后,可以展示到各行业公司执行

者或决策者面前。公司决策人员会抓住市场的有利形势,国家的市场经济政

策,公司当前面临的技术、资金、人员的一系列问题,以及当前形势下公司各

领域的优势,对该行业公司经营情况做出正确的决策,从而规避投资风险,达

到长远规划,创造更多的价值利益。

我的毕业设计主要包含数据采集、清洗数据、存储数据、分析数据、数据

可视化。

1.2开发环境与工具

1.2.1Python简介

Python是一种易于学习又功能强大的编程语言。它提供了高效的高级数

据结构,还能简单有效地面向对象编程。Python优雅的语法和动态类型,以

及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语

言。

Python解释器及丰富的标准库,提供了适用于各个主要系统平台的源码

或机器码,这些可以到Python官网/免费获

取,并可自由地分发。许多免费的第三方Python模块、程序、工具和它们的

文档,也能在这个网站上找到对应内容或链接。

Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调

用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩

2

湖南商务职业技术学院毕业设计

展程序语言。

Python语言拥有强大的“胶水”功能可以把多种不同语言编写的程序融合

到一起实现无缝拼接,更好地发挥不同语言和工具的优势,满足不同应用领域

的需求。Python自诞生以来,在30多年的时间里,已经渗透到云计算、大数

据分析、Web前端开发、统计分析、移动终端开发、科学计算、系统运维、人

工智能、机器学习、密码学、计算机辅助教学等几乎所有专业和领域,在黑客

领域更是多年来一直拥有霸主地位。

本项目使用的是python3.9

1.2.2MySQL简介

对于一个系统而言,数据库本身意味着对数据的持久化的一种实现方式,

该实现方式是相对于通过文件等保存数据的方式来描述的。通过数据库使数据

管理更加便捷,且数据本身有迹可循,最终,大量的数据集合成一个仓库,称

为数据库。

MySQL数据库的标志是一个可爱的小海豚,它象征着这个数据库的读取、存

取速度和优秀准确的含义。它不仅高效而且安全、能与多款主流的计算机语言

紧密结合,十分方便开发人员对其进行操作。对于企业而言,MySQL的体量小、

操作并不复杂。关键是开源免费,极大的节省了公司的成本。受到普通中小企

业的喜爱和欢迎。个人用户可以网上下载MySQL数据库十分方便。

活泼美丽的小海豚是MYSQL数据库的标志,作为中小型数据库,MYSQL的

小海豚比hive的大象、docker的鲸鱼小很多,虽然它的吞吐量虽小,不具备

海量式数据存储,但是它依然能存储大量数据,对数据的读取、存储非常优

秀。作为一个关系型数据库管理系统,能够存储的数据量不多,麻雀虽小五脏

俱全,它不仅对数据的增、删、改、查由统一软件进行管理和控制,而且速度

极快、高效而且安全,能与多款主流的计算机语言紧密结合,十分方便开发人

员对其进行操作。

1.2.3JypyterLab简介

JupyterLab是最新的基于网络的笔记本、代码和数据的互动开发环境。它

灵活的界面允许用户配置和安排数据科学、科学计算、计算新闻和机器学习的

工作流程。一个模块化的设计邀请了一些扩展来扩展和丰富功能。

Python第三方库简介:

Pandas库提供了工具用来分析结构化数据,它能用来数据分析、数据清洗

3

湖南商务职业技术学院毕业设计

和数据挖掘,还能使用多维矩阵。

Numpy库它是Python进行数据分析的基石,能产生随机数,转换典型复

杂数据,还能处理高等数学中的线性代数和产生多维数组对象。

Time库Python处理时间的模块

Json库Python高效处理在Python和Json之间转换的库

Re库Python使用正则表达式的拓展库

Random库它能制造和生成随机数。

Pyecharts库Python绘制优美数据可视化库,更加倾向于多维数据绘

图。比如柱状图、折线图、3D柱状图、漏斗图。

Requests库Python内置了requests模块,该模块主要用来发送HTTP请

求,requests模块比urllib模块更简洁。

1.2.4Pycharm简介

Pycharm是PythonIDE,它是一个PythonIDE,具有在使用Python语言

开发时提高效率的工具(例如语法突出显示、项目管理、代码跳转、智能提

示、自动完成、单元测试、版本控制等)。另外。此IDE提供高级功能,以支

持Django框架下的专业web开发。还支持CoogleApp引擎,更重要的是,

PyCharm支持IronPython。IronPython是优雅的Python编程语言和强大的。

是NET平台的有机结合。这些功能通过高级代码分析器支持,使PyCharm成为

Python专业开发人员和新手使用的强大工具。

在“开始”菜单中可以打开PyCharm,然后看到的界面就是IDE开发环境,

整个界面包括菜单栏、工具栏、文件导航区、程序编辑区、控制台输出区五个

部分,菜单栏包括PyCharm的所有菜单控制命令,工具栏用来对程序的运行和

调试进行控制,文件导航区对项目包含的文件、目录进行管理,包括创建、删

除、重命名等,程序编辑区用来编写程序代码,控制台输出区用来显示程序运

行的结果。

2需求分析

2.1可行性需求分析

1、技术可行性

Python是一门面向对象的计算机编程语言,它在数据采集、处理、分析与

可视化方面有着独特的优势,能够帮助职场编程人员从容应对大数据时代的挑

4

湖南商务职业技术学院毕业设计

战。本项目使用Python作为主要编程语言,通过编写代码程序来达到数据采

集、数据清洗、数据处理、数据分析与数据可视化。在数据采集的过程中,分

析采集的网络资源请求中发现,请求的是一个被隐藏并且动态加载的Json数

据源,需要观察浏览器网络资源列表中请求的参数规律,来完成变换请求

Header的参数而实现更换数据源,以达到批量获取股票行情数据,并调整数据

结构和临时存储到csv中。之后,经过数据清洗和预处理,便于后续数据调用

和数据可视化。最后一步,我们将会把确认无误的数据持久化存储到Mysql。

上述为本项目的技术可行性,并且我将在后续的步骤过程中,不断完善工

作内容,确保项目能稳定、不遗漏、有条不紊的完成。严格的保证项目的严谨

性,完整性和可行性。

2、项目可行性

投资股票是为了获得更大的收益,但由于股市具有很大的动态特性,股票

投资的收益和风险往往成正比,投资收益越高,存在的风险就越大。有效预测

股价,最大限度地避免股票风险,增加投资收益是股票投资者最关注的话题。

中国大陆市场有两个证券交易场所:上海证券交易所和深圳证券交易所。

本次项目经过采集上海交易所官网行情报表的股票数据,以进一步分析我国证

券交易市场股票信息。开展对各上市公司股票的公司名称、股票代码、股票涨

跌(包括涨跌额和涨跌幅)、成交量、成交金额、最高价、最低价、收盘价、

开盘价、换手率的不同数据源调查,从不同角度对股票进行深度分析和数据挖

掘,得出有效信息,并通过数据可视化展示出结果得到定论,之后,对企业的

财务状况、经营业绩、发展趋势、竞争能力、管理能力的改善作为有力依据。

2.2采集目标功能分析

本次项目采集的数据源来自上海证券交易所,使用的是面向对象的编程语

言Python编写爬虫爬取上海证券交易所股票行情数据。数据清洗和预处理后

总共9990条数据,尽量去除不需要的数据,保证数据的准确性和完整性,可

以确保采集的数据真实来自于上海证券交易所股票行情数据,数据是最近的最

新数据。

上海证券交易所股票行情数据经分析过后发现需要进一步分析的列名包括

公司名称、股票代码、股票涨跌(包括涨跌额和涨跌幅)、成交量、成交金

额、最高价、最低价、收盘价、开盘价、换手率,我们需要把各列名下的详细

数据进行整顿和处理,经过预处理和数据清洗后,对数据从各个角度深度分

5

湖南商务职业技术学院毕业设计

析、挖掘数据画像的深度意义。不仅可以查看不同股份类型的上市公司占市场

的持有率和股份占有率,而且还能分析不同类型股份公司占有量变换,对股票

市场涨跌的分析,以及各企业未来股票增长的趋势预测,还能对企业股票obv

增长分析。

2.3关键技术分析

2.3.1网络爬虫技术

网络爬虫,也被称为网络机器人,能够帮助并取代在互联网上自动收集和

组织数据的人。在大数据时代,信息收集是一项重要的任务,例如在搜索引擎

中抓取和收集网站,在数据分析和挖掘中收集数据,在财务分析中收集财务数

据。如果仅仅依靠人力资源来收集信息,不仅效率低下、操作烦琐,还会增加

信息收集的成本。此时,可以使用网络爬虫来自动收集数据和信息。此外,

Web爬虫还可以应用于舆情监测与分析、目标客户数据收集等领域。

当前社会已经迈入大数据时代,互联网中的数据是海量的,如何自动高效

地获取互联网中有用的信息是一个重要问题,而网络爬虫技术就是为解决这些

问题而生的。

当下的网络就像一张大型的蜘蛛网,分布于蜘蛛网各个节点的即是数据,

那么WebCrawler(网络爬虫)即是小蜘蛛,沿着网络“捕获”食物(即数

据),而网络爬虫是指按照一定的规则,自动地抓取网络信息的程序或者脚

本。从专业角度来讲,请求目标的行为是经由程序模仿搜索引擎发出的,爬到

本地的是目标返回的HTML代码、JSON数据、二进制数据、图片、视频等,从

中提取需要的数据并存储起来使用。

对网络爬虫狭义上的理解:利用标准网络协议(如HTTP、HTTPS等),根

据网络超链接和信息检索方法(如深度优先)遍历网络数据的软件程序。

对网络爬虫功能上的理解:确定待采集的URL队列,获取每个URL对应的

网页内容(如HTML和JSON等),根据用户要求解析网页中的字段(如标

题),并存储解析得到的数据。

网络爬虫技术在搜索引擎中扮演着信息采集器的角色,是搜索引擎模块中

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

采用网页爬虫技术采集海量的互联网数据。搜索引擎的大致结构分为。第一

步,利用网络爬虫技术自动化地采集互联网中的网页信息。第二步,存储采集

的信息。在存储过程中,往往需要检测重复内容,从而避免大量重复信息的采

6

湖南商务职业技术学院毕业设计

集;同时,网页之间的链接关系也需要存储,原因是链接关系可用来计算网页

内容的重要性。第三步,数据预处理操作,即提取文字、分词、消除噪音以及

链接关系计算等。第四步,对预处理的数据建立索引库,方便用户快速查找,

常用的索引方法有后缀数组、签名文件和倒排文。第五步,基于用户检索的内

容(如用户输入的关键词),搜索引擎从网页索引库中查找符合该关键词的所

有网页(结果集),通过对结果集的排序,将最相关的网页返回给用户。

另外,网络爬虫在其他方面也发挥着重要作用。

大数据环境下舆情分析与监测:政府或企业基于网络爬虫技术,采集论坛

评论、在线博客、新闻媒体和微博等网站中的海量数据,采用数据挖掘相关方

法(如实体识别、词频统计、文本情感计算、主题识别与演化等),发掘舆情

热点、跟踪目标话题,并根据一定的标准采取相应的舆情控制与引导措施。

大数据环境下的用户分析:企业利用网络爬虫技术,采集用户基本信息、

用户对企业或商品的看法、观点以及态度等数据、用户之间的互动信息等。基

于这些信息,企业可以对用户进行画像,如用户基本属性画像、用户产品特征

画像、用户互动特征画像等,发掘用户对产品的个性化偏好与需求。同样,也

可分析企业自身产品的优势和顾客反馈情况等。

科研需求:针对网络大数据驱动、多源异构数据驱动的科学研究,必然涉

及网络数据采集技术。例如,针对网络中的多源异构数据(如数字、文本、图

片和视频等),如何更好地管理与存储所采集的数据、如何进行数据的过滤与

融合、如何对数据的可用性进行评估、如何将数据应用到商业分析中等,都是

目前研究的热点问题。

网络爬虫按照系统结构和实现技术,大致可分为4类,即通用网络爬虫、

聚焦网络爬虫、增量网络爬虫和深层网络爬虫。

2.3.2文件存取技术

Python内pandas模块的功能转存csv如图2-1显示:

图2-1Python内pandas模块的功能转存csv模块

Python内json模块功能将json数据类型转换成python字典类型如图2-

2显示:

7

湖南商务职业技术学院毕业设计

图2-2json模块方法

2.3.3可视化技术

数据可视化是一种将庞杂抽象的数据转化为直观易懂的图形的数据呈现技

术,我们快速把握数据的分布和规律,更加轻松地理解和探索信息。在当今这

个信息爆作的时代数据可视化越来越受重视。

第三方库Pyecharts是由Python开发的Echarts图标库扩展。丰富的图

型,高度个性化、精美生动、还能交互深受开发人员喜爱,因此他有广大的用

户群。

抓取的股票数据经过数据清洗和数据处理,转化为了我们想要的csv格式

存储下来后。我们直接打开数据集文件,无法直接获取我们想要的指导思想和

得出理论。

所以我们需要对数据进行操练,想要发挥或者挖掘出数据的价值,为我们

或者企业创造价值,由此,我们需要让数据“动”起来。这需要一门专业的技

术,它就是数据可视化。有了它,我们就可以对不断的增长或者爆发的数据进

行处理,将数据中包含的信息以生动、直观的方式展现出来。以更好的方法,

让我们能不断发现数据背后传递的思想和规律。为我们发表想法和实际做法提

供重要论点。

我们需要进一步分析,比如对数据画像,数据挖掘,数据画图。但是,可

视化的类型分为科学可视化、信息可视化、可视分析学。我们该用哪个呢?

本次项目将以信息可视化的类型进行分析。信息可视化处理的是信息化的

数据,比如对文本、数据库文件、结构化文件、非结构化数据的分析。主要应

用与数字化、金融、社交网络、科学勘测、信息交互、生产制造等。它将会在

有限的空间直接传递批量的抽象信息。

8

湖南商务职业技术学院毕业设计

本次项目在爬取上海证券交易所数据,并以较为简单的方式去可视化,这

里采用的是pyecharts技术,将我们需要提取规律和思想的数据,绘制成优美

的图形,从而提高我们的工作效率。

3数据采集

3.1行情报表股票数据采集

3.1.1采集页面分析

首先,我们使用谷歌浏览器搜索上海证券交易所关键字并访问官方网址,

之后找到股票行情报表页面观察如图3-1,访问的URL为http://www。sse。

/market/price/report/再然后点击页面底部的分页按钮并观察URL

如图3-2所示,可以发现URL框无变化。

图3-1数据网址页面

图3-2数据网址页面

按F12调出开发者工具,刷新页面,如图3-3。

9

湖南商务职业技术学院毕业设计

图3-3开发者工具

我们可以利用全局搜索工具定位所需数据位置,点击开发者工具Network

中请求头部信息Header,发现响应的真实URL,并分析资源请求的URL变化,

发现请求是一个GET请求,URL中发现begin和end分别是0和25,之后分别

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

请求参数,如图3-4。

图3-4QueryStringParameters

10

湖南商务职业技术学院毕业设计

3.1.2字段分析

首先,我们需要筛选采集证券代码,证券简称,类型,最新,涨跌幅,涨

跌,成交量(手),成交额(万元),前收,开盘,最高,最低这些字段,然后在

需要分析的网页界面中选择页面元素字段,进入元素模式,定位到我们需要的

数据的HTMLdom树位置,接着跳转开发者工具页面,点击Network(网络请求

资源),记得先清空网络请求列表,之后刷新浏览器页面,等待页面加载完

成,再然后点击开发者工具中需要的数据请求的数据资源预览Preview按钮,

如图3-5。我们可以发现,返回的响应数据显示的结构是一个类似json的数据

类型,前面的jsonpCallback是该网站数据请求并渲染js的json数据回调函

数,需要获取的数据在该函数中部,所以我们需要把它过滤掉,接着我们需

要把反复获取到的类json响应数据按照原网页所展示的数据结构存储到csv

中。

图3-5分析数据类型页面

3.1.3编程实现

导入所需库,如图3-6所示。

11

湖南商务职业技术学院毕业设计

图3-6导入所需库页面

设置请求头,伪装成浏览器访问服务器,如图3-7所示。

图3-7请求头内容页面

代码实现如下:

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

importrequests

importtime

importrandom

importjson

importpandasaspd

defReguest_MutiData(first,second,all_date):#请求数据

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

湖南商务职业技术学院毕业设计

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):#数据解析

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):#数据存储

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__':

#程序调用主入口

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

湖南商务职业技术学院毕业设计

3.2历史股票数据采集

3.2.1采集页面分析

首先,我们在获取行情报表的基础上同样使用谷歌浏览器搜索上海证券交

易所关键字并访问官方网址,之后找到股票行情报表页面观察,访问的URL为

/market/price/trends/,按F12调出开发者工具,

刷新页面,如图3-8。

图3-8数据网址页面以及F12调出开发者工具后的页面

图3-9请求Header

14

湖南商务职业技术学院毕业设计

我们可以利用全局搜索工具定位所需数据位置,点击开发者工具Network

中请求头部信息Header,发现响应的真实URL为。

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

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

并分析资源请求的URL变化,发现请求是一个GET请求,URL地址中的请求参

数股票代码为我们上一次采集综合一中存储的行情报表中的股票代码。也可以

在Payload的QueryStringParameters中找到请求参数,如图3-10。

图3-10QueryStringParameters

3.2.2字段分析

首先,我们需要分析并筛选采集证卷代码,日期,看盘,最高,最低,收

盘,成交量,成交额这些字段,然后在需要分析的网页界面中选择页面元素字

段,进入元素模式,定位到我们需要的数据的HTMLdom树位置,接着跳转开

发者工具页面,点击Network(网络请求资源),记得先清空网络请求列表,之

后刷新浏览器页面,等待页面加载完成,再然后点击开发者工具中需要的数据

请求的数据资源预览Preview按钮,如图3-11。我们可以发现,返回的响应

数据显示的结构是一个类似json的数据类型,前面的jsonpCallback是该网

站数据请求并渲染js的json数据回调函数,需要获取的数据在该函数中部,

所以我们需要把它过滤掉,接着我们需要把反复获取到的类json响应数据按

15

湖南商务职业技术学院毕业设计

照原网页所展示的数据结构存储到csv中。

图3-11分析数据类型页面

3.2.3编程实现

导入所需库,如图3-12所示。

图3-12导入所需库页面

设置请求头,伪装成浏览器访问服务器,如图3-13所示。

图3-13请求头内容页面

代码实现如下:

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

importrequests

importre

16

湖南商务职业技术学院毕业设计

importjson

importpandasaspd

importtime

importrandom

defReguest_MutiData(code):#请求数据

#获取历史行情数据

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):#数据解析

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):#数据存储

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

columns=['证卷代码','日期','看盘','最高','最低','

17

湖南商务职业技术学院毕业设计

收盘','成交量','成交额'])

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

columns=['证卷代码','日期','看盘','最高','最低','收盘','成

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

encoding='utf-8')

if__name__=='__main__':#程序调用主入口

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数据清洗与处理

当我们得到了大量的数据后,面对繁杂的数据甚至可能无从下手,因为发

获取到的数据结构有点乱,数据中存在缺失值、重复值、无效值、空值,此

时,需要检查数据的一致性了,把“脏”数据剔除,此时需要处理缺失值、重

复值、无效值和空值。这能有效保证数据的质量达标和降低数据错误率。

本次项目获取到的数据集结构经过调整并序列化后,与原网页数据结构比

对,可以基本上一一对应。但是仍会有缺失值和无效值等,我们可以通过计算

机的帮助和人工手动剔除不需要的数据或者填写缺失值。之后对数据的进行按

索引排序,确保数据的规范和一致性。

4.1数据清洗

读取行情数据如下图4-1和4-2所示。

18

湖南商务职业技术学院毕业设计

图4-1行情报表股票数据清洗页面

图4-2历史股票数据清洗页面

经过比对和检查,发现数据不存在缺失,错位还有空值,那么我们根据需求

将有效数据统一规划去掉不要的行列数据,防止数据冗余。因此我们只需保留

需要的数据,然后整理为原网页格式存入data。csv文件中,留存后续作为统计

分析、可视化使用。

19

湖南商务职业技术学院毕业设计

图4-3数据清洗完成界面

图4-4数据清洗完成界面二

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

4.2数据储存

数据存储是保留以后可能会使用到的数据的有效方式,它可以分为本地存

储和网络存储,本项目使用的是本地存储,本地存储包括很多种方式和格式,

经常可见的有数据结构规范的结构化数据格式(如json、csv、excel)和非结

构化数据格式(图像),非结构化数据中常见的一大类文本格式存储(如记事

20

湖南商务职业技术学院毕业设计

本,word,html)。如果需要存储的数据体积不大,以上列举的常用几种方式

基本上可以满足需求,但是当需要存储的数据量非常大时,上述方式存储和读

取数据的效率就会很低,此时我们可以更换数据的存储方式来提高计算机工作

效率,比如:数据库。数据库按照类型可分为关系型数据库与非关系型数据

库。常见的关系型数据库有Mysql、Oracle、SQLServer等,非关系型数据库

有MongoDB、Redis等。关系型数据库在事务上大多都有一定的关系或者联

系,而非关系型数据库在事务上都没有绝对的关系。本次存储项目文件采用的

是小型数据库Mysql和csv,如图4-5、图4-6和图4-7所示。

图4-5数据存储为csv页面

图4-6数据存储MySQL页面

图4-7数据存储MySQL页面二

4.3编程实现

创建数据库,并且设定字符集编码为utf8,如图4-8所示。

21

湖南商务职业技术学院毕业设计

图4-8创建MySQL数据库并设定字符集编码

导入本地行情报表,csv表格数据,如图4-9和图4-10所示。

22

湖南商务职业技术学院毕业设计

图4-9导入本地csv文件数据到数据库中

图4-10csv文件数据成功导入到数据库中

验证存入数据是否正确,如图4-11所示。

图4-11验证Mysql数据一

同理再次验证,如图4-12所示。

23

湖南商务职业技术学院毕业设计

图4-12验证Mysql数据二

5数据统计与分析

5.1数据准备

导入需要的相关库,使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论