首页 > 编程语言 >Python爬虫案例:简单获取股票、指数、三大报表数据

Python爬虫案例:简单获取股票、指数、三大报表数据

时间:2024-03-15 18:00:13浏览次数:38  
标签:financial Python 爬虫 report import stock 三大 sina

Python爬虫案例:简单获取股票、指数、三大报表数据

文章目录
    • Python爬虫案例:简单获取股票、指数、三大报表数据
      • 介绍
    • 1.准备工作
    • 2. 以不同股票、指数为行,爬取不同日期的数据
      • 调用tushare库获取数据,并保存到本地
      • baostock库获取单支股票的详细信息
    • 3.爬取三大报表数据
      • 使用 akshare库获取上市公司列表
      • 爬取公司财务报表数据
    • 4. 总结
介绍
  • 本案例操作容易上手,代码简短,即使没有学过Python也可使用,只需简单更换原文股票/指数代码和保存数据文件的路径即可。
  • 爬取股票、指数和三大报表数据的目的和意义在于获取金融市场和上市公司的实时和历史数据,以供进一步分析、研究和决策。通过爬取股票数据,我们可以追踪股票价格的变化和波动,识别潜在的投资机会和风险,从而进行有效的股票交易。爬取指数数据可以帮助我们了解整个市场的走势和表现,监测市场整体风险和趋势,为资产配置和投资决策提供重要参考。
  • 对于上市公司的三大报表数据(即资产负债表、利润表和现金流量表),爬取这些数据能够深入了解公司的财务状况、经营业绩和现金流情况。通过对这些数据进行分析,投资者和研究人员可以评估公司的盈利能力、偿债能力和成长潜力,辅助投资决策和风险管理。

1.准备工作

  • 安装Anaconda:

    1. 首先,前往Anaconda官网(https://www.anaconda.com/products/individual)下载适用于你操作系统的Anaconda安装程序。

    2. 运行下载的Anaconda安装程序。根据安装向导的指示进行安装。在安装过程中,你可以选择是否将Anaconda添加到系统的环境变量中。

    3. 安装完成后,打开终端(对于Windows用户是Anaconda Prompt或者命令提示符),输入以下命令,验证Anaconda是否成功安装:

      conda --version
      
      
  • 启动Jupyter Notebook:

    1. 在终端中,输入以下命令启动Jupyter Notebook:

      jupyter notebook
      
      
    2. Jupyter Notebook服务器会在默认浏览器中打开一个新页面。你将在这个页面上进行所有的Jupyter Notebook交互操作。

    3. 在页面的右上角,你可以点击“New”按钮,然后选择“Python 3”来创建一个新的Python 3的Notebook。

  • 安装爬虫相关的库

    在终端(对于Windows用户是Anaconda Prompt或者命令提示符)输入以下命令安装相关库名。

    pip install 库名
    
    

2. 以不同股票、指数为行,爬取不同日期的数据

调用tushare库获取数据,并保存到本地

选取股票代码为 ‘002549’,‘600008’,‘300332’,‘300055’,'600292’进行调用,生成的DataFrame格式的数据如下,横轴为不同股票,纵轴为时间序列(2020-11-01至 2021-11-01)

    # 导入需要的包
    import pandas as pd
    import tushare as ts
    import numpy as np
    import matplotlib.pyplot as plt #绘图
    
    symbols = [ '002549','600008','300332','300055','600292']#里面为股票、指数代码
    noa = len(symbols)
    indexes = pd.date_range('2020-11-01', '2021-11-01')
    data = pd.DataFrame(index=indexes)
    for sym in symbols:
        k_d = ts.get_k_data(sym, '2019-01-01', ktype='D')
        k_d['date'] = k_d['date'].astype('datetime64[ns]')
        k_d.set_index('date', inplace=True)
        data[sym] = k_d['close'] //这里选择每只股票的收盘价组成data
    data = data.dropna()
    # 简单查看一下股票数据:
    data.head()
    # 保存数据
    data.to_csv('价格数据.csv')

baostock库获取单支股票的详细信息

使用baostock库可获取单支股票的详细信息。比如open(开盘价)、high(当日最高价)、low(当日最低价)、preclose(前一日收盘价)、pctChg(涨跌幅)等。

生成数据的格式如下,以时间序列为索引,不同数据元素为横轴。

  import baostock as bs
     import pandas as pd
     import numpy as np
     import matplotlib.pyplot as plt
     from datetime import datetime, date

      # 登陆系统
     lg = bs.login()
     code = 'sh.000300' 
     start = '2022-01-01'
     end = '2023-07-01'
     
     # 获取指数基金指数历史数据
     # 沪深300指数
     hs300_price = bs.query_history_k_data_plus(code, "date,code,open,high,low,close,preclose,pctChg",
                   start_date=start, end_date=end, frequency="d")
     # 整合为DataFrame格式
     data_list = []
     while (hs300_price.error_code == '0') & hs300_price.next():
         data_list.append(hs300_price.get_row_data())
     hs300 = pd.DataFrame(data_list, columns=hs300_price.fields)
     # 保存数据
     hs300.to_csv('沪深300.csv')

3.爬取三大报表数据

使用 akshare库获取上市公司列表

生成格式如下图所示:

image-20230721113206313.png

import pandas as pd
import numpy as np
import datetime
from matplotlib import pyplot as plt
import akshare as ak

#获取A股全部股票数据 存储到stock_basic.csv
stock_zh=ak.stock_zh_a_spot()
stock_zh.to_csv("stock_basic.csv") 

爬取公司财务报表数据
  • 获取公司个股股票数据
stock_zh[stock_zh["名称"]=="复星医药"]
stock_daily = ak.stock_zh_a_hist(symbol="600196", period="daily", start_date="20220629", end_date='20230629', adjust="qfq")
close_price=stock_daily[["日期","收盘","最高","最低"]]
close_price.set_index("日期",inplace=True)
# 保存数据
close_price.to_csv('600196.csv')

  • 获取公司三大报表数据
  1. 现金流量表

1689911701239.png

  1. 利润表

1689912167991.png

  1. 资产负债表

1689912167991.png

#获取现金流量表
stock_financial_report_sina_df = ak.stock_financial_report_sina(stock="600196", symbol="现金流量表")

geli_sheet1=stock_financial_report_sina_df[stock_financial_report_sina_df["报表日期"]=="20221231"]
# 保存数据
stock_financial_report_sina_df.to_excel('600196现金流量表.xlsx')

#获取利润表
stock_financial_report_sina_lrb = ak.stock_financial_report_sina(stock="600196", symbol="利润表")

geli_sheet2=stock_financial_report_sina_lrb[stock_financial_report_sina_lrb["报表日期"]=="20221231"]
# 保存数据
stock_financial_report_sina_lrb.to_excel('600196利润表.xlsx')

#获取资产负债表
stock_financial_report_sina_lrb = ak.stock_financial_report_sina(stock="600196", symbol="资产负债表")

geli_sheet3=stock_financial_report_sina_lrb[stock_financial_report_sina_lrb["报表日期"]=="20221231"]
# 保存数据
stock_financial_report_sina_lrb.to_excel('600196资产负债表.xlsx')

4. 总结

  • 本文主要介绍了利用Python金融数据库爬取股票、指数和三大报表数据的方法和过程。

读者福利:如果大家对Python感兴趣,这套python学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、Python量化交易等习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论

④ 20款主流手游迫解 爬虫手游逆行迫解教程包

⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解

⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解

⑦ 超300本Python电子好书,从入门到高阶应有尽有

⑧ 华为出品独家Python漫画教程,手机也能学习

⑨ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

标签:financial,Python,爬虫,report,import,stock,三大,sina
From: https://blog.csdn.net/2301_76161259/article/details/136746543

相关文章

  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的PCB电子元件识别系统(Python+PySide6界面+训练代码)
    摘要:开发PCB电子元件识别系统对于电子制造业的生产效率和产品质量具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个PCB电子元件识别系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5,展示了不同模型间的性能指标,如mAP、F1Score等......
  • Python之Web开发中级教程----创建Django子应用
    Python之Web开发中级教程----创建Django子应用基于上一个教程的Django项目(可以先看上一集,链接如下:)https://mp.csdn.net/mp_blog/creation/editor/1367248972.创建子应用pythonmanager.pystartappbookadmin.py:跟网站的后台管理站点配置相关。apps.py:用于配置当前应用......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的日常场景下的人脸检测系统(深度学习模型+PySide6界
    摘要:开发用于日常环境中的人脸识别系统对增强安全监测和提供定制化服务极为关键。本篇文章详细描述了运用深度学习技术开发人脸识别系统的全过程,并附上了完整的代码。该系统搭建在强大的YOLOv8算法之上,并通过与YOLOv7、YOLOv6、YOLOv5的性能比较,展示了不同模型的关键性能指标,如mAP......
  • Python下Django通过SSHTunnel连接ECS上未开通外网地址RDS的解决方案
    在开发过程中,碰到需要在PythonDjango项目中连接到位于ECS上但未开通外网地址的RDS数据库。这种情况下,通过建立SSH隧道来实现连接,确保数据传输的安全性和可靠性。 1、安装sshtunnel包pip3installsshtunnel2、导入SSHTunnelFowarder模块fromsshtunnelimp......
  • 快速上手Python爬虫,轻松掌握技巧!
    很多人都听说过爬虫,我也不例外。曾看到别人编写的爬虫代码,虽然没有深入研究,但感觉非常强大。因此,今天我决定从零开始,花费仅5分钟学习入门爬虫技术,以后只需轻轻一爬就能查看所有感兴趣的网站内容。广告?不存在的,因为我看不见。爬虫只会获取我感兴趣的信息,不需要的内容对我而言只......
  • Python 函数的不定长参数介绍 -- argc/*argcs/**kargcs
    目录一.前言二.Python不定长参数argc/*kargcs简介1.函数不定长参数*args使用2.函数不定长参数**kwargs使用3.函数不定长参数*args和**kwargs只能放在形参的末尾,顺序不能错.三.Python不定长参数argc/*kargcs实战四.Python不定长参数argc/*kargcs总结五......
  • Python3 stdout read readline 阻塞情况简单说明
         Python3stdoutreadreadline阻塞情况简单说明 执行命令行,并获取返回结果。代码1:process=subprocess.Popen(cmd_string,stdout=subprocess.PIPE,\      universal_newlines=True,\      stderr=subprocess.PIPE,\    ......
  • python bytes格式的一些转换
    importbinascii#中文字符串转bytess="中国"b=s.encode("utf-8")print(b)#输出:b'\xe4\xb8\xad\xe5\x9b\xbd'#bytes转字符串,默认utf-8解码print(b.decode())#输出:中国#16进制字符串转byteshex_s="e4b8ade59bbd"b=bytes.fromhex(he......
  • Python的基本语法
    Python的基本语法是学习这门语言的起点。以下是一些关键的语法概念和规则,它们构成了Python编程的基础:1.**缩进**:  -Python使用缩进来定义代码块,而不是使用大括号或其他符号。通常,缩进使用4个空格。  -缩进在定义函数、循环、条件语句等结构时非常重要。  ```py......
  • 基于python+django的协同过滤算法的小说推荐系统
    摘 要随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为小说推荐的管理起到关件作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的小说推荐系统,通过此网站爬虫技术获取数据。当前的银行用户行为管理存在工作效率......