巨潮资讯网年报爬虫

2023-11-07

巨潮资讯网年报爬虫

  • 代码直接复制即可使用
  • 这是一个Post请求爬虫,与Get请求存在一点小区别,不过核心思想是一致的
    Tips:
  • 需要在py文件夹目录下,新建一个“年报”名称的文件夹,存放下载的报表
  • 同时在py文件夹目录下,需要一个stockcode.xlsx文件,里面是需要爬取的公司代码,格式如图所示,其中公司代码需要为字符型,数字型的保存会有问题(000520会变成520)
  • B站视频讲解
    在这里插入图片描述
  • 在代码中这个位置可以根据需要调整爬取年份在这里插入图片描述
'''
由于数据量较大,建议将数据分成几组,多次爬虫,避免一次爬虫过程中,爬虫时间较长,出现意外情况而未能保存数据
'''
import requests,time,random,json
import pandas as pd

def req(stock,year,org_dict):
    # post请求地址(巨潮资讯网的那个查询框实质为该地址)
    url = "http://www.cninfo.com.cn/new/hisAnnouncement/query"
    # 表单数据,需要在浏览器开发者模式中查看具体格式
    data  = {
        "pageNum":"1",
        "pageSize":"30",
        "tabName":"fulltext",
        "stock":stock + "," + org_dict[stock] ,# 按照浏览器开发者模式中显示的参数格式构造参数
        "seDate":f"{str(int(year)+1)}-01-01~{str(int(year)+1)}-12-31",
        "column":"szse",
        "category":"category_ndbg_szsh",
        "isHLtitle": "true",
        "sortName":"time",
        "sortType": "desc"
        }
    # 请求头
    headers =  {"Content-Length": "201","Content-Type":"application/x-www-form-urlencoded"}
    # 发起请求
    req = requests.post(url,data=data,headers=headers)
    
    if json.loads(req.text)["announcements"]:# 确保json.loads(req.text)["announcements"]非空,是可迭代对象
        for item in json.loads(req.text)["announcements"]:# 遍历announcements列表中的数据,目的是排除英文报告和报告摘要,唯一确定年度报告或者更新版
            if "摘要" not in item["announcementTitle"]:
                if "英文" not in item["announcementTitle"]:
                    if "修订" in item["announcementTitle"] or "更新" in item["announcementTitle"]:
                        adjunctUrl = item["adjunctUrl"] # "finalpage/2019-04-30/1206161856.PDF" 中间部分便为年报发布日期,只需对字符切片即可
                        pdfurl = "http://static.cninfo.com.cn/" + adjunctUrl
                        r = requests.get(pdfurl)
                        f = open("年报" +"/"+ stock + "-" + year + "年度报告" + ".pdf", "wb")
                        f.write(r.content)                       
                        print(f"{stock}-{year}年报下载完成!") # 打印进度
                        break
                    else:
                        adjunctUrl = item["adjunctUrl"] # "finalpage/2019-04-30/1206161856.PDF" 中间部分便为年报发布日期,只需对字符切片即可
                        pdfurl = "http://static.cninfo.com.cn/" + adjunctUrl
                        r = requests.get(pdfurl)
                        f = open("年报" +"/"+ stock + "-" + year + "年度报告" + ".pdf", "wb")
                        f.write(r.content)                       
                        print(f"{stock}-{year}年报下载完成!") # 打印进度
                        break
# 该函数主要是通过http://www.cninfo.com.cn/new/data/szse_stock.json该json数据,找到每个stock对应的orgid,并存储在字典org_dict中
def get_orgid():
    org_dict = {}
    org_json = requests.get("http://www.cninfo.com.cn/new/data/szse_stock.json").json()["stockList"]

    for i in range(len(org_json)):
        org_dict[org_json[i]["code"]] = org_json[i]["orgId"]

    return org_dict
if __name__ == "__main__":# 程序入口
    # 读取需要爬取的股票代码
    pdlist = pd.read_excel("stockcode.xlsx",converters={'stockcode':str})["stockcode"]
    stock_list = pdlist.to_numpy().tolist()

    org_dict = get_orgid()

    for stock in stock_list:# 一层循环,按股票代码循环
        for year in ["2018","2019","2020"]:# 二层按年份循环
            req(stock,year,org_dict)# 调用req函数
            time.sleep(random.randint(0,2))# 适当休眠,避免爬虫过快
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

巨潮资讯网年报爬虫 的相关文章

随机推荐

  • Java数据结构和算法(一)——简介

    本系列博客我们将学习数据结构和算法 为什么要学习数据结构和算法 这里我举个简单的例子 编程好比是一辆汽车 而数据结构和算法是汽车内部的变速箱 一个开车的人不懂变速箱的原理也是能开车的 同理一个不懂数据结构和算法的人也能编程 但是如果一个开车
  • apk文件 -- 反编译

    源博客 https www cnblogs com mfrbuaa p 4588057 html 编译工具 apktool 资源文件获取 能够提取出图片文件和布局文件进行使用查看 dex2jar 将apk反编译成java源代码 classe
  • Python中多线程和线程池的使用方法

    Python是一种高级编程语言 它在众多编程语言中 拥有极高的人气和使用率 Python中的多线程和线程池是其强大的功能之一 可以让我们更加高效地利用CPU资源 提高程序的运行速度 本篇博客将介绍Python中多线程和线程池的使用方法 并提
  • ad9361收发异常问题分析

    最近在调试ad9361 发送都调试好了 但是接收一直没调试好 折腾了一个多月才搞定接收 根据官方提供的api代码 需要修改的有 1 修改reference clk rate参考时钟 2 修改xo disable use ext refclk
  • CTF——被改错的密码

    http ctf idf cn index php g game m article a index id 29 cca9cc444e64c8116a30la00559c042b4看着像一串MD5加密 但是实际不是 去掉中间的l 进行md5
  • 新手小白一看就懂的Excel技能之入门基础

    很多同学开开心心拿到新买的电脑 开机一看 桌面干干净净的 想打开Excel 半天找不到 这些痛 只有新手小白才能懂 今天 我给大家好好讲讲怎么使用Excel 鼠标左键点击电脑桌面左下角的 搜索 输入 Excel 看到 Microsoft O
  • 过拟合现象,原因,以及降低过拟合的方法

    一 什么是过拟合 为什么要避免过拟合 图1 1 Overfit Normal 上图是一张使用线性回归拟合二维样本数据的matlab输出图片 其中Normal曲线是使用使用了带参数空间限制的最小二乘法进行求解的模型 Overfit曲线是使用最
  • 微服务中常用的注解

    注解的定义 Annotation 注解 用于为Java代码提供元数据 简单理解注解可以看做是一个个标签 用来标记代码 是一种应用于类 方法 参数 变量 构造器及包的一种特殊修饰符 1 Target 表示该注解类型所使用的程序元素类型 结合E
  • 机器学习实践(一)—sklearn之概述

    1956年 人工智能元年 人类能够创造出人类还未知的东西 这未知的东西人类能够保证它不误入歧途吗 一 机器学习和人工智能 深度学习的关系 机器学习是人工智能的一个实现途径 深度学习是机器学习的一个方法发展而来 二 机器学习 深度学习的应用场
  • Office 2019 for Mac 安装

    1 下载微软官方Office 2019 for Mac 64位 大小 1 7G 2 按照提示安装Office 2019 for Mac 3 下载14743217 Microsoft Office 2019 VL Serializer安装器
  • 发qq邮件被对方服务器拒绝,QQ被对方拉黑了。我发QQ邮件对对方能收到吗?

    QQ被对方拉黑了 我发QQ邮件对对方能收到吗 以下文字资料是由 历史新知网www lishixinzhi com 小编为大家搜集整理后发布的内容 让我们赶快一起来看一下吧 QQ被对方拉黑了 我发QQ邮件对对方能收到吗 拉黑删除能收到的 邮件
  • Scrapy实战案例--抓取股票数据并存入SQL数据库(JS逆向)

    目标网址 http webapi cninfo com cn marketDataZhishu 之前在这篇文章里面对该网站的JS进行了一个逆向的解析 JS逆向解析案例 接下来我们来创建一个Scrapy项目来爬取某潮的数据并保存在数据库中 过
  • 基于LayUI+Servlet的权限管理系统的设计

    权限管理是所有后台系统的都会涉及的一个重要组成部分 主要目的是对不同的人访问资源进行权限的控制 避免因权限控制缺失或操作不当引发的风险问题 如操作错误 隐私数据泄露等问题 本系统基于JSP Servlet JDBC LayUI的技术 在系统
  • WebRTC打开本地摄像头

    本文使用WebRTC的功能 打开电脑上的摄像头 并且把摄像头预览到的图像显示出来 纯网页实现 能支持除IE外的多数浏览器 手机浏览器也可用 本文链接 引入依赖 我们需要引入adapter latest js 这个WebRTC adapter
  • 计算机中模板与母版的区别,ppt中母版模板主题版式之间的区别和联系?

    ppt中母版模板主题版式之间的区别和联系 由会员分享 可在线阅读 更多相关 ppt中母版模板主题版式之间的区别和联系 1页珍藏版 请在人人文库网上搜索 1 模板是现成的样式 包括图片动画等 直接输入内容就可以使用了 母版是自己设计模板的菜单
  • STM32单片机Flash模拟EEPROM

    摘要 STM32单片机都带有ROM和RAM 其中STM32根据自身的ROM Flash 可以分为小容量产品 中容量产品 大容量产品 根据FLASH容量可以分为 小容量 0 32K 中容量 64 128K 大容量 256K以上 包含256K
  • 【Green公式】Hunter’s Apprentice(判断多边形为顺时针或逆时针)--鞋带公式

    题目描述 When you were five years old you watched in horror as a spiked devil murdered your parents You would have died too
  • C语言字节对齐

    文章来源于 点击打开链接 文章最后本人做了一幅图 一看就明白了 这个问题网上讲的不少 但是都没有把问题说透 一 概念 对齐跟数据在内存中的位置有关 如果一个变量的内存地址正好位于它长度的整数倍 他就被称做自然对齐 比如在32位cpu下 假设
  • ElasticSearch基础操作入门

    参考 4条消息 教你快速入门ElasticSearch 超详细简单 暗余的博客 CSDN博客 elasticsearch菜鸟教程 一个索引就是一个拥有几分相似特征的文档的集合 使用Chrome浏览器ElasticSearch Head 具体
  • 巨潮资讯网年报爬虫

    巨潮资讯网年报爬虫 代码直接复制即可使用 这是一个Post请求爬虫 与Get请求存在一点小区别 不过核心思想是一致的 Tips 需要在py文件夹目录下 新建一个 年报 名称的文件夹 存放下载的报表 同时在py文件夹目录下 需要一个stock