在一个审计项目开始时,我们往往会先了解企业的背景、经营模式、主营业务情况,并且与同行业对比各种关键指标,这时候就需要下载很多同行业年报来进行横向纵向的对比分析。我们一般都会去巨潮资讯上一个个下载,这样很慢。现在,我 写了一段代码,可以一键批量抓取上市公司年报,请往下看。
致朋友:相信一些没有编程基础的朋友,在看到下面工具的安装和程序的使用方法的时候,不免头皮发麻,内心嘀咕一句:“这他么什么玩意儿”。但是,遇到这种情况,我们不是应该硬着头皮去挑战一下自己么,这就是突破啊。再者说,我们这次稍微麻烦头疼一下,以后仅需要双击一下就快速的完成工作了,相信你会做出做好的选择!加油。这个小工具对于大家来说,可能会难在安装过程,大家可自行百度。实在不行,可后台留言,本人看到会尽快回复。
准备工作:
1、安装Python解释器,详见“”。安装requests、pandas、xlrd这些Python依赖包。具体方法如下,按Win+R,调出命令行窗口(黑窗口),在其中输入pip install xxx(xxx代表pandas等依赖包)。
2、复制代码到本地文件记事本中,然后将.txt后缀改为.py。
3、在Excel表中的第一个sheet中添加下面数据,“公司名称”(要求为证券简称)和“时间范围”(可为单年、连续多年、跨年),具体示例如下:
示例文档模板
4、双击.py文件。
抓取年报示例动画如下:
运行代码:
_version__ = 20200406
# 读取Excel表格中的数据,开始获取年报
# 读取的Excel表格有一定的格式
# 可以获取该公司当年、跨年、连续年的年报
import requests
import json
import pandas as pd
import os
def deal_year(year):
"""
接收一个字符串,转变为列表形式的数据。
:param year: 字符串,其中可以包含、-
:return: 返回年份组成的列表
"""
if "、" in year and "-" in year: # 处理时间范围中有连续的时间和单个时间
year_list = year.split("、")
year_list = [year_list + list(range(in('-')[0]), in('-')[1])+1)) for y in year_list if "-" in y][0]
year_list = [str(y) for y in year_list if "-" not in str(y)]
elif "、" in year: # 处理时间范围中不连续的部分
year_list = [str(y) for y in year.split("、")]
elif "-" in year: # 处理时间范围中连续部分
year_list = list(range(in("-")[0]), in("-")[1]) + 1))
else: # 处理单个年的部分
year_list = [year]
return year_list
def send_requests(key_words):
headers = {
"User-Agent": "Mozilla (Windows NT 10.0; Win64; x64) AppleWebKi (KHTML, like Gecko) Chrome Safari;}
url = "{}&sdate=&edate=&isfulltext=false&sortName=pubdate&sortType=desc&pageNum=1".format(
key_words)
response = reque(url, headers=headers)
response = re()
dict_data = j(response) # 请求每个页面的数据
if not os.("download"):
os.mkdir("download")
for value_dict in dict_data["announcements"]:
name = value_dict["announcementTitle"] # 该页面上的文件名称
url_son = value_dict["adjunctUrl"] # pdf文件的链接
path = r".download\"+name.replace("<em>", "").replace("</em>", "") + ".pdf"
if "年度报告" in path and "半年度报告" not in path and "摘要" not in path and "财务" not in path:
url_pdf = "; + url_son
response = reque(url_pdf, headers=headers)
response = re
with open(path, "wb+") as f:
f.write(response)
break
df = ("./获取公司年报清单.xlsx")
for name, year in zip(df["公司名称"], df["时间范围"]):
# print(name)
name = str(name).strip() # 处理公司名称中不规范的空格
year = str(year)
year_list = deal_year(year) # 处理时间范围
for year in year_list:
key_words = name + str(year) + "年报"
send_requests(key_words)
更多精彩内容,请关注微信公众号:可乐瓶与荷包蛋
1.文章《上市公司年报下载、批量下载上市公司年报…》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《上市公司年报下载、批量下载上市公司年报…》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好