Python判断股票是交易日,爬虫抓取深交所交易日历

2023-10-27

为了判断某一天是不是股票的交易日,以此区分自然日与交易日,我们通过抓取深交所的交易日历获取相关数据

获取交易日思路

首先,打开深交所的交易日历页面:http://www.szse.cn/aboutus/calendar/index.html

在这里插入图片描述

我们可以看到2022-04-042022-04-05那个地方是灰色的,因此大概率能够区分是否为交易日的接口在,果然一番操作下来(打开F12的Network看借口),我们发现了交易日历的接口:

对于接口:http://www.szse.cn/api/report/exchange/onepersistenthour/monthList?month=2022-04

在这里插入图片描述

这样,我们就有了如下方案:

  1. 构造URL:http://www.szse.cn/api/report/exchange/onepersistenthour/monthList?month={日期}
  2. 写一个小爬虫,解析这个接口数据
  3. 如果jybz为0,表示非交易日,如果jybz是1,表示是交易日

完整代码

import requests
import json
import requests.packages.urllib3.util.ssl_
import time

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'ALL'  # 防止SSL限制


def save_trading_date(date_str: str, is_trading_day: bool):
    """保存结果:交易日/非交易日
    :param date_str: 日期,字符串格式
    :param is_trading_day: 是否为交易日,为了区分交易日保存
    """
    if is_trading_day:
        save_file_path = "交易日.txt"
    else:
        save_file_path = "非交易日.txt"
    with open(save_file_path, 'a') as file:
        file.write(date_str)
        file.write("\n")


def get_trading_date(month_date: str):
    """通过爬虫抓取深交所的交易日历
    :param month_date: 日期,例 2020-01、2022-12
    """
    target_url = "http://www.szse.cn/api/report/exchange/onepersistenthour/monthList?month={}".format(month_date)
    send_headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
        "Connection": "keep-alive",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"}
    time.sleep(2)  # 限制频率
    req = requests.get(target_url, headers=send_headers)
    json_state = json.loads(req.text)
    for dict_value in json_state['data']:
        if dict_value['jybz'] == "0":  # 非交易日
            save_trading_date(dict_value['jyrq'], False)
        elif dict_value['jybz'] == "1":  # 交易日
            save_trading_date(dict_value["jyrq"], True)


def main():
    for _year_i in ["2020", "2021", "2022"]:
        for _month_i in range(12):
            get_trading_date("{}-{}".format(_year_i, _month_i + 1))


if __name__ == '__main__':
    main()

然后会在本地生成两个文件:交易日.txt非交易日.txt,内容就是对应的日期了:

交易日.txt:

2020-01-02
2020-01-03
2020-01-06
2020-01-07
....

非交易日.txt:

2020-01-01
2020-01-04
2020-01-05
2020-01-11
2020-01-12
2020-01-18
2020-01-19
2020-01-24
2020-01-25
2020-01-26
2020-01-27
2020-01-28
2020-01-29
....
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python判断股票是交易日,爬虫抓取深交所交易日历 的相关文章

随机推荐

  • iOS 开发者账号添加手机号码 Program License Agreement has been updated.edit phone number

    苹果开发者账号经常性的更新一些开发协议让开发者同意 苹果爸爸的要求 同意就好了 只有Agent权限账号会收到 团队成员账号权限区别请参考 最近苹果开发者账号又更新了协议 apple id没有绑定手机号的 在开发者账号里会要求你必须绑定手机号
  • 研究生阶段的研究方向以及一些想法

    好久没有更新了 综合考虑后 即将入学 KAUST 成为一名硕博连读的学生了 出于导师研究方向以及个人兴趣的一些原因 希望在接下来的五年 深耕一下 Generative Models Continual Learning Zero Shot
  • 接口测试工具-Postman-安装和使用

    目录 Postman介绍 1 安装Postman 2 Postman 使用 2 1 合集 collections 2 2 发起请求 2 3 Get请求 2 3 1 无参数的Get请求 2 3 2 带参数的Get请求 2 4 Post请求 2
  • Python薪资的高涨原因及相应代码分析

    Python语言自问世以来 一直以其简洁 易学和多功能而受到广泛关注和应用 在近年来 Python编程语言的普及和应用领域的不断扩大 使得Python开发人员的需求量大幅增加 与此同时 Python工资也呈现出快速上涨的趋势 本文将深入探讨
  • JDK1.8新特性详解

    介绍 Java是世界上使用最广泛的编程语言之一 近年来随着互联网技术的高速发展 对Java的要求也越来越高 JDK1 8是Java平台上的一个重要版本 引入了许多新特性和改进 本文将详细介绍JDK1 8中的新特性和应用场景 一 Lambda
  • 日期处理(moment.js)使用笔记

    之前没接触moment js 在新项目中见到了 做一做使用笔记也是分享一下 安装 引用 npm install moment 或者 yarn add moment import moment from moment 导入文件 Vue pro
  • Spring Boot各版本与Java版本的对应兼容关系,与构建工具(Maven、Gradle)版本的对应兼容关系,对servlet 容器的支持

    by 垃圾程序员 当前文章具有时效性 在当前springboot的版本下做的整合 之后大家视情况可以直接到Spring的官网查看 Spring HomeLevel up your Java code and explore what Spr
  • MAC下QT5 + Xcode 4.6.3 使用小结

    1 直接在命令行里使用qmake 大家的MAC上面QT5的安装路径不同 导致不能直接使用qmake命令行 xcode项目也不能拿来就用 有两种方法可以直接在命令行里面使用qmake 1 修改 bash profile 此方法在PATH中添加
  • [C#学习] BindingNavigator控件

    一 概述 BindingNavigator控件的用户界面 UI 由一系列 ToolStrip 按钮 文本框和静态文本元素组成 用于进行大多数常见的数据相关操作 如添加数据 删除数据和在数据中导航 每个控件都可以通过 BindingNavig
  • Windows安全中心 你的IT管理员已限制对此应用的区域的访问

    打开本地组策略 gt 计算机配置 gt Windows设置 gt 安全设置 gt 本地策略 gt 安全选项 gt 打开安全选项后 gt 滚轮转动往下拉 gt 找到 用户账户控制 选择以管理员模式批准运行所有管理员 打开属性 选择已启用 应用
  • linux-文件时间详解

    不同的文件系统 不同的操作系统对于文件时间的设置是不同的 一般分为创建时间 birth 修改时间 ctime 访问时间 atime 一般默认情况下显示的是修改时间 ctime 即默认以修改时间 ctime 当作排序时间 即一般情况 ls l
  • vue中的事件绑定

    目录 1 事件处理 1 1 最简单的事件绑定例子 1 2 默认参数event 1 3 其它自定义参数 1 4 this 2 事件修饰符 2 1 prevent阻止默认事件 常用 2 2 stop阻止事件冒泡 常用 2 3 once事件只触发
  • [原创]微软BI专题-渐变维度Type2进化三部曲

    在ETL过程中 对于渐变维度的处理 一直是大家比较关注的问题 关于渐变维度的概念 我们在2007年8月的 渐变维度转换及其实现 一文中有所介绍 本文将在实际应用的对比中 提供三种处理渐变维度的方法 并比较其效率 第一代 SSIS控件时代 对
  • [数值计算-15]:函数近似值的线性与非线性拟合的原理与Python代码示例

    作者主页 文火冰糖的硅基工坊 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 119973082 目录 第1章
  • Python实用脚本:统计TXT文件字数

    最近在用金山打字通练习98版的五笔输入法 想知道自己找的文章大概有多少个字数 因为txt文件打开看不了总字数 就复制后放在word看字数 感觉实在是麻烦 就找个了Python脚本来算字数 还能统计总共练习了多少个字 txt内容要转换成ANS
  • 解决httpcore和 httpclient 版本冲突,以及httpcore下载不了依赖的问题。

    目录 问题一 编辑 问题二 解决 问题一 maven install 报错说找不到httpcore 问题二 在项目运行时候找不到org apache http annotation ThreadSafe的类文件 解决 1 遇到该问题可能是h
  • 自动驾驶测试中的Re-simulation技术

    随着自动驾驶技术的发展 自动驾驶仿真的重要性越来越大 一是体现在上路之前可以通过仿真进行初步验证 二是体现在路上遇到问题时 可以通过仿真进行数据回放 改善算法模块性能 平时常见的自动驾驶仿真主要是利用软件搭载测试场景 然而 随着data d
  • 【解决】VS2019各种乱码的情况

    关于Visual Studio 2019控制台输出中文出现乱码问题及解决办法 1 从 txt文件中读取输出出现乱码 2 从中文字符串中读取输出出现乱码 3 上传git时 gitee github里出现乱码 总结 环境 Windows11 V
  • Torchtext 0.12+ API 根据token,得到语料中统计的频数值(3)

    使用OrderedDict构造vocab时会按照从大到小的排序来构造token 因此借用这个特点 构造一个列表 专门保存vocab中每一个单词的频数 此时列表的下标位置与vocab中下标位置是一一对应的 借助vocab将文本 gt toke
  • Python判断股票是交易日,爬虫抓取深交所交易日历

    为了判断某一天是不是股票的交易日 以此区分自然日与交易日 我们通过抓取深交所的交易日历获取相关数据 获取交易日思路 首先 打开深交所的交易日历页面 http www szse cn aboutus calendar index html 我