从东方财富爬取上市公司财务信息的代码;法律规定每年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.
 

85 lines
3.5 KiB

# coding=utf-8
import csv
import pymysql
# 本地
# db_host = '127.0.0.1'
# db_port = 3306
# db_user = 'root'
# db_password = '123456'
# db_name = 'crawler'
# 测试服
# 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'
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)
del company_finance_details_list[0]
for company_finance_details in company_finance_details_list:
stock_code = company_finance_details[0]
stock_name = company_finance_details[1]
company_name = company_finance_details[2]
del company_finance_details[0:3]
TotalAssets_2022 = turn_num(company_finance_details[0])
TotalAssets_2021 = turn_num(company_finance_details[1])
TotalAssets_2020 = turn_num(company_finance_details[2])
SalesProceeds_2022 = turn_num(company_finance_details[3])
SalesProceeds_2021 = turn_num(company_finance_details[4])
SalesProceeds_2020 = turn_num(company_finance_details[5])
LRZE_2022 = turn_num(company_finance_details[6])
LRZE_2021 = turn_num(company_finance_details[7])
LRZE_2020 = turn_num(company_finance_details[8])
JLR_2022 = turn_num(company_finance_details[9])
JLR_2021 = turn_num(company_finance_details[10])
JLR_2020 = turn_num(company_finance_details[11])
FZZJ_2022 = turn_num(company_finance_details[12])
FZZJ_2021 = turn_num(company_finance_details[13])
FZZJ_2020 = turn_num(company_finance_details[14])
JZC_2022 = TotalAssets_2022 - FZZJ_2022
JZC_2021 = TotalAssets_2021 - FZZJ_2021
JZC_2020 = TotalAssets_2020 - FZZJ_2020
Ratal_2022 = turn_num(company_finance_details[15])
Ratal_2021 = turn_num(company_finance_details[16])
Ratal_2020 = turn_num(company_finance_details[17])
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_2022,TotalAssets_2021,TotalAssets_2020,SalesProceeds_2022,SalesProceeds_2021,SalesProceeds_2020,LRZE_2022,LRZE_2021,LRZE_2020,JLR_2022,JLR_2021,JLR_2020,JZC_2022,JZC_2021,JZC_2020,Ratal_2022,Ratal_2021,Ratal_2020,is_delisted) VALUES('%s','%s','%s',%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,0)" % (
stock_code,stock_name,company_name,
TotalAssets_2022,TotalAssets_2021,TotalAssets_2020,
SalesProceeds_2022,SalesProceeds_2021,SalesProceeds_2020,
LRZE_2022,LRZE_2021,LRZE_2020,
JLR_2022,JLR_2021,JLR_2020,
JZC_2022,JZC_2021,JZC_2020,
Ratal_2022,Ratal_2021,Ratal_2020
)
print(sql)
cursor.execute(sql)
db.commit()
db.close()