从东方财富爬取上市公司财务信息的代码;法律规定每年4月30日前所有上市公司必须公布年度财报,所以在5月之后去爬就行
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
3.5 KiB

7 months ago
# coding=utf-8
import csv
import pymysql
# 本地
db_host = '127.0.0.1'
db_port = 3306
db_user = 'root'
db_password = '123456'
db_name = 'chace'
7 months ago
# 测试服
# db_host = '47.112.242.103'
# db_port = 17601
# db_user = 'ccwtdm'
# db_password = 'fhRZLEu562wi23M4QC4iYq615UZEvgeB'
# db_name = 'chace'
# 正式服
# db_host = '119.23.173.194'
# db_port = 17600
# db_user = 'ccwfinances'
# db_password = 'CCWfinacial@231215#'
# db_name = 'chace'
7 months ago
def turn_num(s):
s_num = 0
if '万亿' in s:
s_num = float(s.replace('万亿','')) * 100000000
elif '亿' in s:
s_num = float(s.replace('亿','')) * 10000
elif '' in s:
s_num = float(s.replace('',''))
return s_num
file = 'company_finance_details.csv'
with open(file,'r') as file:
company_finance_details_list_csv = csv.reader(file,delimiter=',')
company_finance_details_list = []
for company_finance_details_csv in company_finance_details_list_csv:
company_finance_details_list.append(company_finance_details_csv)
for company_finance_details in company_finance_details_list:
stock_code = company_finance_details[0].zfill(6)
7 months ago
stock_name = company_finance_details[1]
company_name = company_finance_details[2]
del company_finance_details[0:3]
TotalAssets_2024 = turn_num(company_finance_details[0])
TotalAssets_2023 = turn_num(company_finance_details[1])
TotalAssets_2022 = turn_num(company_finance_details[2])
SalesProceeds_2024 = turn_num(company_finance_details[3])
SalesProceeds_2023 = turn_num(company_finance_details[4])
SalesProceeds_2022 = turn_num(company_finance_details[5])
LRZE_2024 = turn_num(company_finance_details[6])
LRZE_2023 = turn_num(company_finance_details[7])
LRZE_2022 = turn_num(company_finance_details[8])
JLR_2024 = turn_num(company_finance_details[9])
JLR_2023 = turn_num(company_finance_details[10])
JLR_2022 = turn_num(company_finance_details[11])
FZZJ_2024 = turn_num(company_finance_details[12])
FZZJ_2023 = turn_num(company_finance_details[13])
FZZJ_2022 = turn_num(company_finance_details[14])
JZC_2024 = TotalAssets_2024 - FZZJ_2024
JZC_2023 = TotalAssets_2023 - FZZJ_2023
7 months ago
JZC_2022 = TotalAssets_2022 - FZZJ_2022
Ratal_2024 = turn_num(company_finance_details[15])
Ratal_2023 = turn_num(company_finance_details[16])
Ratal_2022 = turn_num(company_finance_details[17])
7 months ago
db = pymysql.connect(user=db_user, passwd=db_password, db=db_name, host=db_host, port=int(db_port),
charset="utf8mb4", use_unicode=True)
cursor = db.cursor(pymysql.cursors.DictCursor)
sql = "INSERT INTO ccw_company_finance_details(stock_code,stock_name,company_name,TotalAssets_1,TotalAssets_2,TotalAssets_3,SalesProceeds_1,SalesProceeds_2,SalesProceeds_3,LRZE_1,LRZE_2,LRZE_3,JLR_1,JLR_2,JLR_3,JZC_1,JZC_2,JZC_3,Ratal_1,Ratal_2,Ratal_3,is_delisted,Year) VALUES('%s','%s','%s',%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,0,'2025')" % (
7 months ago
stock_code,stock_name,company_name,
TotalAssets_2024,TotalAssets_2023,TotalAssets_2022,
SalesProceeds_2024,SalesProceeds_2023,SalesProceeds_2022,
LRZE_2024,LRZE_2023,LRZE_2022,
JLR_2024,JLR_2023,JLR_2022,
JZC_2024,JZC_2023,JZC_2022,
Ratal_2024,Ratal_2023,Ratal_2022
7 months ago
)
print(sql)
cursor.execute(sql)
db.commit()
db.close()