利用Python实现批量下载上市公司财务报表

利用Python实现批量下载上市公司财务报表

简介

本文将介绍如何利用Python和第三方库实现批量下载上市公司财务报表。我们将以下载深交所上市公司2019年半年度报告为例。

步骤

步骤一:确定下载链接

首先我们需要确定要下载哪些报表,以及它们的下载链接。深交所上市公司2019年半年度报告的下载链接为:

http://www.szse.cn/disclosure/listed/bulletinDetail/index.html?bulletinId=59459993167&companyCode=000895

其中,bulletinId表示报表的ID,companyCode表示公司的代码。我们需要将这两个参数提取出来,并将它们放进模板链接中,以便后续循环下载所有报表。

步骤二:解析公司列表

我们需要先获取所有上市公司的代码和名称。深交所提供了一个接口可以获取这些信息,请求链接为:

"http://www.szse.cn/api/report/ShowReport/data"

该接口返回的是一个json格式的数据,其中data字段是一个包含所有公司信息的列表。

步骤三:下载报表

有了步骤一和步骤二,我们就可以开始下载报表了。我们可以使用requests库向服务器发送请求,并将响应内容保存为pdf文件。

示例代码如下:

import requests

for company in companies:
    company_code = company['code']
    report_id = "59459993167" # 以2019年半年度报告为例
    url = f"http://www.szse.cn/disclosure/listed/bulletinDetail/index.html?bulletinId={report_id}&companyCode={company_code}"
    response = requests.get(url)
    filename = f"{company['name']}-2019半年度报告.pdf"
    with open(filename, 'wb') as f:
        f.write(response.content)

其中,companies是一个包含所有上市公司信息的列表,company['code']表示每个公司的代码,company['name']表示每个公司的名称。requests.get(url)向服务器发送请求并获取响应内容。我们将响应内容保存到以公司名称和报表类型为文件名的pdf文件中。

步骤四:处理异常

在下载过程中可能会出现网络异常等错误,我们需要对这些异常进行处理,否则程序会崩溃。我们可以使用try...except语句捕获异常并记录错误日志,以便后续处理。

示例代码如下:

import requests
import logging

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.ERROR)

for company in companies:
    try:
        company_code = company['code']
        report_id = "59459993167" # 以2019年半年度报告为例
        url = f"http://www.szse.cn/disclosure/listed/bulletinDetail/index.html?bulletinId={report_id}&companyCode={company_code}"
        response = requests.get(url)
        filename = f"{company['name']}-2019半年度报告.pdf"
        with open(filename, 'wb') as f:
            f.write(response.content)
    except Exception as e:
        logger.error(f"Failed to download {company['name']} report due to {e}")

其中,logging.getLogger(__name__)创建一个名为__name__的Logger实例,logging.basicConfig(level=logging.ERROR)设置记录日志的级别为ERROR。我们在try...except语句中捕获全部异常,并使用Logger记录错误日志。

示例

以下是几个示例:

示例1:获取所有公司信息

import requests

url = "http://www.szse.cn/api/report/ShowReport/data"
response = requests.get(url)
data = response.json()['data']

for company in data:
    print(company['code'], company['name'])

示例2:下载2019年半年度报告

import requests

companies = [{'code': '000001', 'name': '平安银行'}, {'code': '000002', 'name': '万科A'}, {'code': '000004', 'name': '国农科技'}, {'code': '000005', 'name': '世纪星源'}, {'code': '000006', 'name': '深振业A'}, {'code': '000007', 'name': '零七股份'}, {'...
report_id = "59459993167"

for company in companies:
    company_code = company['code']
    url = f"http://www.szse.cn/disclosure/listed/bulletinDetail/index.html?bulletinId={report_id}&companyCode={company_code}"
    response = requests.get(url)
    filename = f"{company['name']}-2019半年度报告.pdf"
    with open(filename, 'wb') as f:
        f.write(response.content)

以上示例仅供参考。实际使用时,需要根据实际情况进行修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用Python实现批量下载上市公司财务报表 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 如何在python中正确使用函数及其语法?

    【问题标题】:How to properly use a function and it’s syntax in python?如何在python中正确使用函数及其语法? 【发布时间】:2023-04-04 20:01:01 【问题描述】: 目前我正在开发一个基本的文本游戏,您可以选择与狼战斗的武器,从字典中驱动谁的健康,您可以选择的武器的统计数据也是如此。…

    Python开发 2023年4月6日
    00
  • Python实用日期时间处理方法汇总

    Python实用日期时间处理方法汇总 介绍 日期和时间在计算机编程中非常重要和常用。Python作为一种流行的编程语言,提供了许多内置的库和第三方模块来处理日期和时间。在本文中,我们将讨论一些常用的Python日期时间处理方法。 日期时间类型 Python内置的datetime模块提供了三种日期/时间类型:date、 time和datetime。具体如下: …

    python 2023年6月2日
    00
  • Python中计算三角函数之cos()方法的使用简介

    当我们在Python中进行三角函数计算时,可以使用cos()方法来计算一个数的余弦值。下面就是Python中计算三角函数之cos()方法的使用简介: 简介 cos()是Python中计算余弦函数的方法,它的使用方法如下: import math math.cos(x) 其中,x是要计算余弦值的角度,单位是弧度。返回值是该角度的余弦值。 示例1:计算90度的余…

    python 2023年6月3日
    00
  • Python中list初始化方法示例

    以下是详细讲解“Python中list初始化方法示例”的完整攻略。 在Python中,list是一种常用的数据类型,可以存储多个值。本文将介绍list的初始化方法,包括使用方括号、使用()函数、使用推导式、使用*运算符等方法。 使用方括号初始化list 可以使用方括号[]来初始化一个list。例如: lst = [1, 2, 3, 4, 5] 上述代码初始化…

    python 2023年5月13日
    00
  • 分享2个方便调试Python代码的实用工具

    当我们在编写Python代码时,有时候会遇到一些难以调试的问题,这时候我们就需要一些工具来帮助我们进行调试。下面介绍两个方便调试Python代码的实用工具。 工具一:pdb 介绍 pdb是Python的标准库,是Python调试工具的一种。pdb提供了交互式调试模式,可以单步调试Python代码,查看各个变量的值。 使用方法 在需要调试的代码中,插入“imp…

    python 2023年5月31日
    00
  • python去掉字符串中重复字符的方法

    要去掉Python字符串中的重复字符,可以使用以下两种方法: 方法一:使用集合 可以先将字符串转换为集合,集合会自动去重,然后再将集合转回字符串。 str1 = "Hello, World!" set1 = set(str1) str2 = ”.join(set1) print(str2) 输出结果: H, drWelo! 方法二:使用…

    python 2023年6月3日
    00
  • Python正则表达式经典入门教程

    Python正则表达式经典入门教程攻略 正则表达式是一种用于描述字符串模式的语言,可以用于匹配、查找、替换和割字符串。在Python,re模块提供了正则表达。本文将详细讲解Python正则表达式经典入门教程的内容,包正则表达式语法、re模块的用以及示例说明。 正则表达式语法 正则表达式语法是一组特殊字符符号用于描述字符串模式。面是一些常用正则表达式语法: .…

    python 2023年5月14日
    00
  • python赋值操作方法分享

    下面就为你讲解“Python赋值操作方法分享”的完整攻略。 标准赋值 赋值操作是在Python编程中最常用的一种操作。Python支持多种赋值操作方法,以灵活适应各种不同的编程情景。我们首先介绍最常见的标准赋值方式。 标准赋值是通过使用等号=将一个值或表达式的结果赋予一个变量。例如: a = 1 上面这个例子将数字1赋值给变量a。可以通过print函数打印出…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部