简单的用Python采集股票数据,保存表格后分析历史数据

news2024/9/24 7:24:19

前言

字节跳动如果上市,那么钟老板将成为我国第一个世界首富


趁着现在还没上市,咱们提前学习一下用Python分析股票历史数据,抱住粗大腿坐等起飞~

好了话不多说,我们直接开始正文

准备工作

环境使用

  • Python 3.10 解释器
  • Pycharm 编辑器

模块使用

  • requests —> 数据请求模块
  • csv -> 保存csv表格
  • pandas -> 可以实现保存Excel表格文件

requestspandas是第三方模块,需要手动安装,直接pip install 加上模块名字即可。

案例实现流程

数据来源分析

  1. 明确需求: 明确采集的网站以及数据内容
    - 网址: 本次目标
    - 数据: 股票数据

  2. 抓包分析: 分析 股票数据, 可以请求那个网址能够得到
    - 打开开发者工具: F12 / 右键点击检查选择 network (网络)
    - 点击第二页数据

     请求网址:
     请求方式:
     请求头:
    

代码实现步骤

  1. 发送请求 -> 模拟浏览器对于url发送请求
  2. 获取数据 -> 获取服务器返回响应数据 <整个数据>
  3. 解析数据 -> 提取我们需要数据
  4. 保存数据 -> 保存表格文件 < csv / Excel > 中

代码解析

保存表格文件

  1. csv -> csv模块
  2. Excel -> pandas模块
# 创建文件对象
f = open('股票.csv', mode='w', encoding='utf-8', newline='')
# fieldnames 字段名 表头一行数据 <前面保存字典的键>
csv_writer= csv.DictWriter(f, fieldnames=[
    '股票代码',
    '股票名称',
    '当前价',
    '涨跌额',
    '涨跌幅',
    '年初至今',
    '成交量',
    '成交额',
    '换手率',
    '市盈率(TTM)',
    '股息率',
    '市值',
])
# 写入表头
csv_writer.writeheader()
# 创建一个空列表
content_list = []

发送请求

模拟浏览器对于url发送请求

  • 模拟浏览器: headers 请求头
    • 从浏览器开发者工具中直接复制
    • 字典数据类型, 构建完整键值对形式
  • 请求网址:
    从浏览器开发者工具中直接复制
  • 发送请求:
    需要requests模块 -> pip install requests

<Response [200]> 响应对象 表示请求成功

# 模拟浏览器
headers = {
    'Cookie': 's=av17ye9exq; xq_a_token=cf755d099237875c767cae1769959cee5a1fb37c; xq_r_token=e073320f4256c0234a620b59c446e458455626d9; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTcwMTk5NTg4MCwiY3RtIjoxNzAwNTYzOTE3MDU2LCJjaWQiOiJkOWQwbjRBWnVwIn0.EbAa9h0fB9H_sH415f3x8r2CQiKmPbXZMnuKCy401scB1lMQKOffws6WTwPD2UzFWnntYxIQYSJpX509VUYYgCQkZ_bYtLbtYd5PfxLhWx7coauYA4d3x5aZolzB3eP5IthaYAb0Kbj3MPK8LVRBhABpRGr4wajISuABFNezroM_-5dpiOYK7Rk0UXtU2Qhrzxi1BVCgFUhPP-oR_vKenBw5tLzSqa6aO7CukgI7JVb-6LiymuBquE8FE-de8Vs3evai0fvtjiqryrH3EWM3nmDQIayigHRrYo595bD32kUPP4swHF5U2fwbLHTntIRAm9LsXn8sVf-6sUdgHoYZGg; cookiesu=931700563933974; u=931700563933974; device_id=5da9e0ae658f9fcd3d89078312131fb7; Hm_lvt_1db88642e346389874251b5a1eded6e3=1700563934; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1700563934',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
for page in range(1, 58):
    print(f'==============正在采集第{page}页数据内容==============')
    # 请求网址
    url = f'https://stock.雪球.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&order_by=amount&exchange=CN&market=CN&type=sha'
    # 发送请求
    response = requests.get(url=url, headers=headers)

获取数据

获取服务器返回响应数据 <整个数据>

  • response.text 获取响应文本数据 <字符串>
  • response.json() 获取响应json数据 <json数据 大部分情况字典数据>
  • response.content 获取响应二进制数据 <保存图片/视频/音频/特定格式文件的时候>

解析数据

提取我们需要数据
解决数据方法根据获取数据来选择的:
字典取值方法 -> 键值对取值 (根据冒号左边的内容[键], 提取冒号右边的内容[值])

json_data = response.json()  # 返回json字典数据
# for循环遍历
for index in json_data['data']['list'][1:]:
    # 提取数据保存到字典里面, 方便后续保存表格文件
    dit = {
        '股票代码': index['symbol'],
        '股票名称': index['name'],
        '当前价': index['current'],
        '涨跌额': index['chg'],
        '涨跌幅': index['percent'],
        '年初至今': index['current_year_percent'],
        '成交量': index['volume'],
        '成交额': index['amount'],
        '换手率': index['turnover_rate'],
        '市盈率(TTM)': index['pe_ttm'],
        '股息率': index['dividend_yield'],
        '市值': index['market_capital'],
    }
    # 保存数据
    csv_writer.writerow(dit)
    # 把字典添加到空列表里面
    content_list.append(dit)
    print(dit)

效果展示

获取到数据保存到表格后

采集数据和可视化分析部分的代码我都打包好了,文末名片自取。

可视化分析

import pandas as pd         # 做表格数据处理模块 第三方的
from pyecharts.charts import Bar    # 可视化模块 第三方模块
from pyecharts import options as opts   # 可视化模块里面的设置模块(图表样式)
 
# 1. 读取数据
df = pd.read_csv('股票.csv')
x = list(df['股票名称'].values)
y = list(df['成交量'].values)
 
c = (
    Bar()
    .add_xaxis(x[:10])
    .add_yaxis("成交额", y[:10])
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        title_opts=opts.TitleOpts(title="Bar-旋转X轴标签", subtitle="解决标签名字过长的问题"),
    )
    .render("成交量图表.html")
)

好了,今天的分享就到这结束了,下次见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1244109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

检验LIS系统:医院信息管理的重要组成部分

检验LIS系统源码&#xff0c;云LIS系统源码 云LIS系统是医院信息管理的重要组成部分之一&#xff0c;集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。LIS系统不仅是自动接收检验数据&#xff0c;打印检验报告&#xff0c…

WordPress网站如何修复数千个帖子的SEO错误

在本教程中&#xff0c;我们将向您展示如何解决您经常犯的SEO错误。 最好的是您不必花费太多时间&#xff0c;因为您不需要打开并编辑每个帖子。 相反&#xff0c;我们将向您展示如何使用 WordPress 内的电子表格来修复 WordPress 帖子的 SEO。 在这里&#xff0c;我们为您提…

机器学习---最大似然估计和贝叶斯参数估计

1. 估计 贝叶斯框架下的数据收集&#xff0c;在以下条件下我们可以设计一个可选择的分类器 : P(wi) (先验)&#xff1b;P(x | wi) (类条件密度) 但是。我们很少能够完整的得到这些信息! 从一个传统的样本中设计一个分类器&#xff1a; ①先验估计不成问题 ②对类条件密度…

分享5款工作和学习中,经常用到的软件

​ 如今&#xff0c;工作和学习都离不开电脑&#xff0c;所以电脑里的软件自然也是必不可少的&#xff0c;但是电脑软件那么多&#xff0c;不可能每个都装上吧&#xff0c;所以我们要装好用的、实用的&#xff0c;下面给大家分享5款好用到爆的软件&#xff0c;很多懂电脑的人都…

基于JavaWeb+SSM+Vue校园水电费管理小程序系统的设计和实现

基于JavaWebSSMVue校园水电费管理小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 摘 要 III Abstract 1 1 系统概述 2 1.1 概述 2 1.2课题意义 3 1.3 主要内容 3…

传统制造业如何有效实现数字化?企业数字化转型可以借助哪些工具?

2020年&#xff0c;制造业数字化转型行业的价值为2630亿美元。然而&#xff0c;到2026年&#xff0c;这一数字预计将达到惊人的7670亿美元。随着新技术的出现&#xff0c;工业4.0时代已经开始。这是由软件开发和自动化带来的对数字化的日益依赖所决定的&#xff0c;这使得制造过…

C# 执行Excel VBA宏工具类

写在前面 在Excel文档的自动化处理流程中&#xff0c;有部分值需要通过已定义的宏来求解&#xff0c;所以延伸出了用C# 调用Excel中的宏代码的需求。 首先要从NuGet中引入Microsoft.Office.Interop.Excel 类库 using Excel Microsoft.Office.Interop.Excel; 代码实现 /// &l…

前端开发神器之 VsCode AI 辅助插件 DevChat

目录 前言DevChat介绍DevChat 独特优势注册账号安装插件设置密钥访问指令AI 解疑 最后 #AI编程助手哪家好&#xff1f;DevChat“真”好用 # 前言 我们都有过写代码时反复看了半天也不知道bug在哪&#xff0c;大大浪费了时间。一些基础的代码可能看一会儿能够解决&#xff0c;但…

【蓝桥杯省赛真题46】Scratch魔术表演 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解

目录 scratch魔术表演 一、题目要求 编程实现 二、案例分析 1、角色分析

图片如何去除水印?试试这三种去水印方法!

从事自媒体行业的小伙伴们&#xff0c;你们是否经常为文章配图而烦恼呢&#xff1f;下载的图片大部分带有各种各样的水印或者多余元素&#xff0c;让人感到困扰。今天&#xff0c;我要分享三个去水印的妙招&#xff0c;这是新媒体人必备的图片处理技能&#xff0c;快来一起学起…

STM32F103C8T6第6天:adc、iic、spi、温湿度dht11在lcd1602显示

1. ADC介绍 ADC是什么&#xff1f; Analog-to-Digital Converter&#xff0c;指模拟/数字转换器 ADC的性能指标 量程&#xff1a;能测量的电压范围分辨率&#xff1a;ADC能辨别的最小模拟量&#xff0c;通常以输出二进制数的位数表示&#xff0c;比如&#xff1a;8、10、1…

ThinkPHP6.1 多应用模式的一些事儿

TP安装就不说了&#xff0c;直接从安装完成开始了。 安装多应用模式扩展 think-multi-app composer require topthink/think-multi-app删除 app 目录下的 controller 文件夹&#xff08;TP 是根据是否有这个文件夹来判断单应用模式还是多应用模式的&#xff09;。 创建应用 …

C++设计模式之工厂模式(中)——工厂模式

工厂模式 工厂模式介绍示例示例使用运行结果工厂模式与简单工厂模式区别 工厂模式 工厂模式在简单工厂模式的基础之上进行了改进。当需要生产的产品种类增加&#xff0c;可以通过新增子类工厂来生产&#xff0c;没有破坏程序设计原则中的开放封闭原则。 介绍 工厂模式先抽象…

在国外怎么申请香港优才计划项目?和在内地申请有何区别?

在国外怎么申请香港优才计划项目&#xff1f;和在内地申请有何区别&#xff1f; 随着香港优才计划的热度持续上升&#xff0c;也吸引了不少优秀人才想要申请。如果你现在人在新加坡、加拿大、马来西亚、澳大利亚或者其他国家&#xff0c;想申请香港优才计划拿香港身份&#xff…

浅析智慧社区建设趋势及AI大数据监管平台方案设计

一、背景与需求 伴随着社会与经济的发展&#xff0c;人们对生活质量的要求越来越高&#xff0c;与此同时&#xff0c;新兴技术的进步也促进了智慧社区市场的逐步成熟。智慧社区是社区管理的一种新理念&#xff0c;是新形势下城市与社会管理的一种创新模式。 在上海、杭州、深…

pycharm 创建的django目录和命令行创建的django再使用pycharm打开的目录对比截图 及相关

pytcharm创建django的项目 命令行创建的django 命令行创建项目时 不带路径时 (.venv) D:\gbCode>django-admin startproject gbCode 命令行创建项目时 带路径时 -- 所以如果有目录就指定路径好 (.venv) D:\gbCode>django-admin startproject gbCode d:\gbCode\

【精选】​​深度学习:构建卷积神经网络的表情识别系统(源码&教程)

1.研究背景与意义 随着社交媒体和在线通信的普及&#xff0c;人们越来越多地使用表情符号来表达情感和情绪。表情识别系统的发展成为一个重要的研究领域&#xff0c;旨在通过计算机自动识别和理解人类的表情&#xff0c;从而提高人机交互的效果和用户体验。 传统的表情识别方…

“它经济”新风口:海外网红营销之路,打造宠物用品全球热潮

近年来&#xff0c;宠物用品行业在全球范围内迎来了蓬勃发展&#xff0c;消费者对宠物的关注和关爱程度不断提升。随着社交媒体的崛起&#xff0c;海外网红营销正成为宠物用品品牌走向国际市场的有效途径&#xff0c;通过与海外网红的合作&#xff0c;不仅可以提升品牌知名度&a…

vivado产生报告阅读分析18-设计收敛报告

设计收敛报告 Report QoR Assessment report_qor_assessment 命令会生成报告以提供下列信息 &#xff1a; • 评估得分 &#xff0c; 用于指示设计满足性能目标的概率 • 有关建议的后续步骤的流程指南 • 使用率和性能指标汇总信息 • 对于 QoR 至关重要的方法论检查汇…