python写的一个-批量下载股票年报的小工具

2023-11-09

python写的一个-批量下载股票年报的小工具

from urllib import request
import requests
import os
import openpyxl


# print(os.getcwd())

def getKeyList(file):

    x = os.getcwd()
    # print(x)
    #y = os.popen('ls').read()
    # print(y)
    wb = openpyxl.load_workbook(file)
    print(wb, type(wb))
    print(wb.sheetnames)

    # print(wb.active)
    sheet = wb.active
    # print(sheet['A1'].value)
    minrow = sheet.min_row  # 最小行
    maxrow = sheet.max_row
    mincol = sheet.min_column
    maxcol = sheet.max_column
    print('该文件', maxrow, '行', maxcol, '列')

    key_list = []
    for i in range(minrow+1, maxrow+1):
        point = 'A' + str(i)
        person = sheet[point].value
        # print(person)
        if person:
            num = person.split("=")[-1].replace('"', "")
            # print(num)
            key_list.append(num)
    key_list.sort()
    return key_list


def stock(key):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    url1 = f"http://www.cninfo.com.cn/new/information/topSearch/query?keyWord={key}&maxNum=10"
    orgId = requests.post(url1, headers=headers).json()[0]["orgId"]
    url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query'
    data = {
        'pageNum':'1',
        'pageSize': '30',
        'column': 'szse',
        'tabName':'fulltext',
        'stock': key+','+orgId, 
        'category': 'category_ndbg_szsh',
        'seDate': '2018-01-01~2021-06-02', 
        'isHLtitle': 'true',
    }

    dict_data = requests.post(url, data=data, headers=headers).json()
    if dict_data["totalRecordNum"] < 1:
        print(key, "无年报数据")
        print(dict_data)
        return False
    for value_dict in dict_data["announcements"]:
            riqi = value_dict["announcementId"]
            name = value_dict["announcementTitle"]
            wjjname1 = value_dict["secName"]
            wjjname = wjjname1.replace(" ", "")

            if not os.path.exists(wjjname + key):
                os.mkdir(wjjname + key)
                print(wjjname + key + '创建成功')

            if name.find('摘要') >= 1:
                continue
            else:  
                url_r = 'http://www.cninfo.com.cn/new/announcement/download?bulletinId='+riqi
                # https://vip.stock.finance.sina.com.cn/corp/go.php/vCB_Bulletin/stockid/000938/page_type/ndbg.phtml
                request.urlretrieve(url_r, wjjname + key + '/' + wjjname + key + '--' + name + '.pdf')
                print(wjjname + name + '保存成功')

if __name__ == '__main__':
    key = input('请输入股票代码:')
    stock(key)    
    # key_list = getKeyList("证劵48.xlsx")  # 可以用表格导入代码
    # print(key_list)

    # for i in key_list:
    #     stock(i)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python写的一个-批量下载股票年报的小工具 的相关文章

  • 在Linux中的端口80上运行flask[重复]

    这个问题在这里已经有答案了 也许以前有过这个问题的答案 所以请重定向我 如果是这样的话 我正在考虑在端口 80 上运行 Flask 所以我检查了是否有任何东西正在使用端口 80 因为事实证明端口 80 没有运行 所以当我输入以下内容时 if
  • python 打开相对文件夹中所有以.txt结尾的文件

    我需要打开并解析文件夹中的所有文件 但我必须使用相对路径 类似于 input files 我知道在 JavaScript 中你可以使用 path 库来解决这个问题 我怎样才能在Python中做到这一点 这样您就可以获得路径中的文件列表作为列
  • 使用 OpenCV 进行图像模糊检测

    我正在研究图像的模糊检测 我已经用过拉普拉斯方法的方差在 OpenCV 中 img cv2 imread imgPath gray cv2 cvtColor img cv2 COLOR BGR2GRAY value cv2 Laplacia
  • 点击后 Dash DropDown 关闭

    我不希望下拉菜单在选择值后关闭 我希望它在我的页面上保持打开状态 我正在使用 dcc Dropdown dcc Dropdown id job type options self options placeholder Select one
  • PRAW 出现 SSLError?

    我正在尝试开始使用 PRAW 但在使用 login 时遇到问题 我有以下代码 import praw r praw Reddit This is a test bot r login myRedditUsername password 我收
  • Python/Scipy 2D 插值(非均匀数据)

    这是我上一篇文章的后续问题 Python Scipy 插值 地图坐标 https stackoverflow com questions 5124126 python scipy interpolation map coordinates
  • 在 Pyinstaller、语音识别和 Pyttsx3 中使用“-w”时,PySimpleGUI 中出现“OSError:[WinError 6] 句柄无效”

    所以我用 PySimpleGUI 创建了一个程序 然后用 Pyinstaller 从它创建了 exe 文件 这是我的命令 pyinstaller hidden import pyttsx3 drivers hidden import pyt
  • 桨在移动时留下痕迹(Pygame Pong 游戏)[重复]

    这个问题在这里已经有答案了 我的游戏中的球拍有问题 每次我试图移动它时 桨都会留下一条 痕迹 我想这是因为我的代码没有删除旧位置的前一个桨 如果是的话怎么删除之前的呢 我应该使用blit Code import pygame sys ran
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • 尝试安装 python 包 Box2D 时出错

    我正在尝试通过 pip 安装 Box2D 软件包的版本 2 3 10 但是 pip 返回以下错误消息 ERROR Could not find a version that satisfies the requirement Box2D 2
  • 即使使用标头和 Session 对象,Python requests.get 也会失败并出现 403 禁止

    我正在发出 GET 请求来获取 JSON 它在任何设备上的任何浏览器中都可以正常工作 但不能通过 python 请求 url https angel co autocomplete new tags params query sci tag
  • Python 宏:用例?

    如果 Python 有一个类似于 Lisp Scheme 的宏工具 比如元Python https code google com p metapython 你会如何使用它 如果您是一名 Lisp Scheme 程序员 您会使用宏来做什么
  • 更改 Windows 上的 virtualenv 文件夹

    计算机修复后 我的 python 项目目录 Windows 发生了变化 比如从 d 到 f 现在我所有的 virtualenv 都坏了 激活 env 后 virtualenv 中的项目无法找到依赖项 并且自定义脚本 来自 env scrip
  • 有什么理由不在Python中混合使用多处理和线程模块

    我正在考虑使用Python来实现一个需要大量多线程的程序 另一个要求是它将在桌面上运行 因此拥有许多进程将使应用程序显得混乱且难以杀死 在任务管理器中 因此 我正在考虑使用线程和多处理模块来减少进程数量 据我了解 GIL 仅适用于单个进程
  • pygame.image.load 不工作

    我正在尝试为游戏创建世界地图 但是当我尝试将世界地图加载到屏幕上时 命令行告诉我无法执行此操作 这是代码 import sys import pygame from pygame locals import pygame init Surf
  • 为什么变量不在循环外更新?

    无法弄清楚为什么结果中的第一个键是 abc 而不是我期望的 c 我使用的是Python 3 6 4 数据结构很奇怪 因为我删除了不相关的键和值 f replace ab r data abc 1 def 2 ghi 3 jkf 4 lmn
  • 添加条件计数器:基于其他列的值的计数器列

    我有一张这样的桌子 id id2 val a red apple a red orange b blue fish c violet beef a yellow banana a black pork 我想根据 id 和 id2 的值创建一
  • PyQt 和 QSignalMapper/lambdas - 多个信号,单槽

    我在 PyQt 的菜单上有一个操作列表 每个操作对应我想要显示的每个不同的提要 所以我有一个 Y 将活动源设置为 Y Z 将其设置为 Z 等等 对于网络漫画阅读程序 我的菜单上都有 并且觉得自动化方法可能更好 而不是每次都打字 类似于将其添
  • 如何从集合中检索元素而不删除它?

    假设如下 gt gt gt s set 1 2 3 我如何获得一个值 任何值 s不做s pop 我想将该项目保留在集合中 直到我确定可以删除它 这只有在异步调用另一个主机之后才能确定 又快又脏 gt gt gt elem s pop gt
  • Pandas 将时间序列数据重新采样为 15 分钟和 45 分钟 - 使用多索引或列

    我有一些时间序列数据作为 Pandas 数据框 它从每小时过去 15 分钟和过去 45 分钟 时间间隔为 30 分钟 的观察开始 然后将频率更改为每分钟 我想对数据进行重新采样 以便整个数据帧的频率为每 30 分钟一次 15 点和 45 点

随机推荐

  • Elasticsearch 8.0 installation

    after creating an enrollment token on your existing cluster You can complete the following actions at any time Reset the
  • js&ts 常用工具函数

    JavaScript TypeScript 常用工具函数 Utils RGB转换 export const rgbToHex r number g number b number gt string r g b gt 1 lt lt 24
  • Windows Server服务器安全加固基线配置

    一 账户管理 认证授权 一 账户 1 管理缺省账户 安全基线项说明 对于管理员账号 要求更改缺省账户名称 禁用Guest 来宾 账户 操作步骤 进入控制面板 gt 管理工具 gt 计算机管理 在系统工具 gt 本地用户和组 缺省账户Admi
  • Spring Cloud简介,为什么需要Spring Cloud?

    一 为什么需要Spring Cloud 从分布式 微服务的角度而言 就是把我们一个大的项目分解成多个小的模块 这些小的模块组合起来 完成功能 而拆分出多个模块以后 就会出现各种各样的问题 而Spring Cloud提供了一整套的解决方案 S
  • 总结:eclipse编写struts.xml没有提示的问题

    原因 找不到约束文件 解决 联网 手工配 手工配置struts2的dtd约束文件 步骤说明 1 选择 Window gt preferences gt XML gt 点击Add 按钮 2 Location值 通过File System 选择
  • python 财务系统开源系统_10 大顶级开源 ERP 系统

    2014十大顶级开源ERP系统点评 原文网址链接 http www ctocio com hotnews 17865 html 如今 企业资源规划 ERP 和客户关系管理 CRM 系统的必要性已经被各种组织和企业所认可 ERP和CRM能够直
  • 关于“expected ';', ',' or ')' before '&' token”错误

    在GCC编译器上 出现该错误的主要原因是 在C语言里没有C 所谓的 按引用传递 例如C 可以写这样一个函数 void func int a 函数功能 在C语言无法这样使用 所以需要改为地址引用 void func int a 函数功能 具体
  • 基于Jenkins自动打包并部署Tomcat环境

    目录 1 配置git主机 2 配置jenkins主机 3 配置web主机 4 新建Maven项目 5 验证 Jenkins 自动打包部署结果 Jenkins 的工作原理是先将源代码从 SVN Git 版本控制系统中拷贝一份到本地 然后根据设
  • XSS、CSRF、SSRF漏洞的攻击原理以及防御

    目录 XSS 攻击原理 攻击方式 xss漏洞防范 CSRF CSRF攻击成功的两个必要条件 csrf漏洞防范
  • 安装Esxi系统&重装Esxi系统

    安装esxi系统 或者已经安装了esxi需要重装环境 Dell R730服务器 前期准备 将VMware ESXi 5 5 0的安装镜像要提前准备好 通过光碟 U盘 idrac管理界面挂载方式安装都行 1 加载VMware ESXi 5 5
  • 组装一台电脑需要选购哪些基本部件

    1 机箱 一般电脑的主要零件都放在这里 2 显示器 用来看电脑的工作过程 要不然 你都不知道电脑究竟在做什么 3 键盘和鼠标 向电脑输入有用的命令 让它去为我们工作 4 主板 这里是决定你这台电脑性能的重要零件之一 5 内存 当电脑工作时
  • Go Web编程实战(2)----流程控制语句

    目录 流程控制语句 if else语句 for循环语句 用for循环实现do while 用for循环实现while break指定跳出循环 continue语句 for range循环 遍历数组 遍历字符串 遍历map 遍历通道 chan
  • c语言程序位置式pid算法,增量式与位置式PID算法(C语言实现与电机控制项目)...

    4 2核心代码 函数功能 增量PI控制器 入口参数 编码器测量值 目标速度 返回 值 电机PWM 根据增量式离散PID公式 pwm Kp e k e k 1 Ki e k Kd e k 2e k 1 e k 2 e k 代表本次偏差 e k
  • linux 终端使用aplay播放wav

    aplay D plughw 0 0 xxx wav plughw后面的0 0指的是card0 device0 声卡id和设备id 根据个人情况会有不同 声卡id和设备id可以通过aplay l命令来查看 比如 upsquared ubun
  • Redis5.0集群搭建(Redis Cluster)

    Redis集群 redis集群是一个由多个主从节点群组成的分布式服务器群 它具有复制 高可用和分片特性 Redis集群不需要sentinel也能完成节点移除和故障转移的功能 需要将每个节点设置成集群模式 这种集群模式没有中心节点 可水平扩展
  • [1116]mobaxterm使用rz/sz

    安装 yum y install lrzsz 下载 步骤1 sz filename 步骤2 ctrl 鼠标右键 步骤3 Receive file using Z modem 上传 步骤1 rz 步骤2 ctrl 鼠标右键 步骤3 Send
  • ArchLinux安装fcitx5以及拼音输入法

    简介 输入法引擎 需要注意的是 fcitx5 只是提供了基本框架 基本框架只对英文提供了输入支持 如果需要输入其他语言 则需要安装相应的输入法引擎 中文 fcitx5 chinese addons 包含了大量中文输入方式 拼音 双拼 五笔拼
  • SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件

    转载 http blog sina com cn s blog 759444350100vx8u html MIME邮件格式 在RFC 2822文档中定义了简单的ASCII编码的Email的邮件格式 然而随着Internet的发展 Emai
  • JSP JSTL 判断List 大小

    JSTL判断List 大小必须先引入的二个核心包 jsp页面判断获得action设置attribute的List是否为空或者list size的长度 就可以用fn这个标签
  • python写的一个-批量下载股票年报的小工具

    python写的一个 批量下载股票年报的小工具 from urllib import request import requests import os import openpyxl print os getcwd def getKeyL