wip: correct c class fund asset info
parent
9a4b571222
commit
a3042763ee
@ -0,0 +1,44 @@
|
||||
'''
|
||||
Desc: 纠正基金BC类的总资产
|
||||
File: /fund_classify.py
|
||||
File Created: Tuesday, 4th May 2021 12:39:10 pm
|
||||
Author: luxuemin2108@gmail.com
|
||||
-----
|
||||
Copyright (c) 2021 Camel Lu
|
||||
'''
|
||||
|
||||
from pprint import pprint
|
||||
from db.connect import connect
|
||||
from time import sleep
|
||||
import os
|
||||
from fund_info_api import FundApier
|
||||
|
||||
connect_instance = connect()
|
||||
cursor = connect_instance.cursor()
|
||||
|
||||
if __name__ == '__main__':
|
||||
page_start = 3000
|
||||
page_limit = 10000
|
||||
sql_query_a_class = "SELECT fund_code, SUBSTRING(fund_name, 1, CHAR_LENGTH(fund_name)-1) as name, fund_name FROM fund_morning_base WHERE fund_name LIKE '%%A' LIMIT %s, %s ;"
|
||||
cursor.execute(sql_query_a_class, [page_start, page_limit]) # 执行sql语句
|
||||
all_a_results = cursor.fetchall() # 获取查询的所有记录
|
||||
for i in range(0, len(all_a_results)):
|
||||
# pprint(result[1])
|
||||
result = all_a_results[i]
|
||||
sql_query_b_class = "SELECT fund_code, fund_name FROM fund_morning_base WHERE fund_name LIKE '" + \
|
||||
result[1] + "C';"
|
||||
# print('sql_query_b_class', sql_query_b_class)
|
||||
cursor.execute(sql_query_b_class)
|
||||
c_class_result = cursor.fetchone()
|
||||
if c_class_result:
|
||||
fund_code = c_class_result[0]
|
||||
fund_name = c_class_result[1]
|
||||
if '封闭' in fund_name:
|
||||
pprint(c_class_result)
|
||||
else:
|
||||
each_fund = FundApier(fund_code)
|
||||
each_fund.get_base_info()
|
||||
total_asset = each_fund.total_asset
|
||||
sql_update = "UPDATE fund_morning_quarter SET total_asset = %s WHERE fund_code = %s;"
|
||||
cursor.execute(sql_update, [total_asset, fund_code])
|
||||
connect_instance.commit()
|
@ -0,0 +1,112 @@
|
||||
'''
|
||||
Desc: 从基金平台api获取基金信息
|
||||
File: /fund_info_api.py
|
||||
File Created: Wednesday, 5th May 2021 4:17:44 pm
|
||||
Author: luxuemin2108@gmail.com
|
||||
-----
|
||||
Copyright (c) 2021 Camel Lu
|
||||
'''
|
||||
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import os
|
||||
from pprint import pprint
|
||||
from utils import write_json_data
|
||||
|
||||
|
||||
class FundApier:
|
||||
def __init__(self, code):
|
||||
self.fund_code = code
|
||||
self.cur_date = time.strftime("%Y-%m-%d", time.localtime(time.time()))
|
||||
self.end_date = '2021-04-30'
|
||||
self.total_asset = None
|
||||
file_dir = os.getcwd() + '/output/json/' + self.cur_date + '/'
|
||||
self.file_path = '{file_dir}{fund_code}-{end_date}-base.json'.format(
|
||||
file_dir=file_dir,
|
||||
fund_code=code,
|
||||
end_date=self.end_date
|
||||
)
|
||||
|
||||
# 基金信息--来源爱基金
|
||||
def get_base_info(self):
|
||||
if self.base_info_is_exist():
|
||||
with open(self.file_path) as json_file:
|
||||
my_data = json.load(json_file)
|
||||
asset_str = my_data.get('asset')
|
||||
self.total_asset = float(asset_str) if asset_str else None
|
||||
else:
|
||||
url = "http://fund.10jqka.com.cn/data/client/myfund/{0}".format(
|
||||
self.fund_code)
|
||||
|
||||
res = requests.get(url) # 自动编码
|
||||
time.sleep(1)
|
||||
try:
|
||||
if res.status_code == 200:
|
||||
res_json = res.json()
|
||||
if res_json.get('error').get('id') == 0:
|
||||
base_info = res.json().get('data')[0]
|
||||
end_date = base_info.get('enddate')
|
||||
self.total_asset = base_info.get('asset')
|
||||
|
||||
filename = '{fund_code}{end_date}-base.json'.format(
|
||||
fund_code=self.fund_code,
|
||||
end_date='-' + end_date if end_date else ''
|
||||
)
|
||||
write_json_data(base_info, filename)
|
||||
else:
|
||||
pprint(res_json)
|
||||
print('code:1', self.fund_code)
|
||||
else:
|
||||
pprint(res.raw)
|
||||
print('code:2', self.fund_code)
|
||||
raise('中断')
|
||||
except:
|
||||
pprint(res.raw)
|
||||
print('code:3', self.fund_code)
|
||||
raise('中断')
|
||||
|
||||
def get_base_info_hz(self):
|
||||
if self.base_info_is_exist():
|
||||
with open(self.file_path) as json_file:
|
||||
my_data = json.load(json_file)
|
||||
asset_str = my_data.get('asset')
|
||||
self.total_asset = float(asset_str) if asset_str else None
|
||||
else:
|
||||
url = "http://fund.10jqka.com.cn/data/client/myfund/{0}".format(
|
||||
self.fund_code)
|
||||
|
||||
res = requests.get(url) # 自动编码
|
||||
time.sleep(1)
|
||||
try:
|
||||
if res.status_code == 200:
|
||||
res_json = res.json()
|
||||
if res_json.get('error').get('id') == 0:
|
||||
base_info = res.json().get('data')[0]
|
||||
end_date = base_info.get('enddate')
|
||||
self.total_asset = base_info.get('asset')
|
||||
|
||||
filename = '{fund_code}{end_date}-base.json'.format(
|
||||
fund_code=self.fund_code,
|
||||
end_date='-' + end_date if end_date else ''
|
||||
)
|
||||
write_json_data(base_info, filename)
|
||||
else:
|
||||
pprint(res_json)
|
||||
print('code:1', self.fund_code)
|
||||
else:
|
||||
pprint(res.raw)
|
||||
print('code:2', self.fund_code)
|
||||
raise('中断')
|
||||
except:
|
||||
pprint(res.raw)
|
||||
print('code:3', self.fund_code)
|
||||
raise('中断')
|
||||
|
||||
def base_info_is_exist(self):
|
||||
return os.path.exists(self.file_path)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
fund_api = FundApier('003834')
|
||||
fund_api.get_base_info()
|
Loading…
Reference in New Issue