import csv # 将数保存至csv需要的库
import requests # 请求库
def get_data(): # 定义获取网页链接响应的函数
url = "http://IP:8082/security/companyInfo/showBalance.do" # 请求Json数据的链接
headers = {
'Accept': '/',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en-US;q=0.7,en;q=0.6',
'Connection': 'keep-alive',
'Content-Length': '54',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Host': 'IP:8082',
'Origin': 'http://IP:8082',
'Referer': 'http://IP:8082/security/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/538.36',
'X-Requested-With': 'XMLHttpRequest',
} # headers为请求头信息,从网页复制后需要转换为python字典类型
# 构造post请求,设置请求的url,headers和提交的字典参数data
content = requests.post(url=url, headers=headers,
data={'stock_id': '______', # stock_id 股票代码
'report_period_id': '5000'}).json() # report_period_id 报表类型
# 报表类型四种:年报5000、一季报4000、半年报1000、三季报4400
return content # 将请求的响应返回
def save_csv(data, path): # 定义解析及把保存数据的函数
name = [
"货币资金(元)", "结算备付金(元)", "拆出资金(元)", "交易性金融资产(元)", "应收票据(元)", "应收帐款(元)",
"预付帐款(元)", "应收保费(元)", "应收分保账款(元)", "应收分保合同准备金(元)", "应收利息(元)", "应收股利(元)", "其他应收款(元)",
"买入返售金融资产(元)", "存货(元)", "一年内到期的非流动资产(元)", "其他流动资产(元)", "流动资产合计(元)", "发放贷款和垫款(元)",
"可供出售金融资产(元)", "持有至到期投资(元)", "长期应收款(元)", "长期股权投资(元)", "投资性房地产(元)", "固定资产净额(元)",
"在建工程(元)", "工程物资(元)", "固定资产清理(元)", "生产性生物资产(元)", "油气资产(元)", "无形资产(元)", "开发支出(元)",
"商誉(元)", "长期待摊费用(元)", "递延税款借项合计(元)", "其他长期资产(元)", "非流动资产合计(元)", "资产总计(元)",
"短期借款(元)", "向中央银行借款(元)", "吸收存款及同业存放(元)", "拆入资金(元)", "交易性金融负债(元)", "应付票据(元)",
"应付帐款(元)", "预收帐款(元)", "卖出回购金融资产款(元)", "应付手续费及佣金(元)", "应付职工薪酬(元)", "应交税金(元)",
"应付利息(元)", "应付股利(元)", "其他应付款(元)", "应付分保账款(元)", "保险合同准备金(元)", "代理买卖证券款(元)",
"代理承销证券款(元)", "一年内到期的长期负债(元)", "其他流动负债(元)", "流动负债合计(元)", "长期借款(元)", "应付债券(元)",
"长期应付款(元)", "专项应付款(元)", "预计负债(元)", "递延税款贷项合计(元)", "其他长期负债(元)", "长期负债合计(元)",
"负债合计(元)", "股本(元)", "资本公积(元)", "库存股(元)", "盈余公积(元)", "一般风险准备(元)", "未分配利润(元)",
"外币报表折算差额(元)", "归属于母公司所有者权益合计(元)", "少数股东权益(元)", "股东权益合计(元)", "负债和股东权益合计(元)"
] # 资产负债表的指标名称
header_list = ['指标/年份'] #
for i in data["columns"][0]:
header_list.append(i.get('title')) # 整理表头信息,一共六列
try:
csvfile = open(path, "w", newline='', encoding='utf-8-sig') # 创建写入的文件
writer = csv.writer(csvfile) # 创建写入的对象
writer.writerow(header_list) # 写入第一行表头信息
for index, num in enumerate(data['rows']): # 解析报表Json数据
row_data = []
row_data.append(name[index])
row_data.extend([num['value0'], num['value1'],
num['value2'], num['value3'], num['value4']])
writer.writerow(row_data) # 按行写入数据,包含每行开头的指标名称
except Exception as e:
print("write error==>", e)
save_csv(get_data(), '资产负债表.csv') # 调用函数
print('ok')
已完善