import random
import pymongo
import akshare as ak
import json
import time
# 打开数据库
mongo_client = pymongo.MongoClient('mongodb://localhost:27017/')
# 若没有Database 和Collection,则会自动创建
mongo_db = mongo_client['SinaData']
# mongo_client = pymongo.MongoClient('mongodb://localhost:27017/')
# # 若没有Database 和Collection,则会自动创建
mongo_collection = mongo_db['SinaAllStockName']
def main():
try:
stockNUm = 0
# 获取数据库下集合名称
result = mongo_db.list_collection_names(session=None)
print(result)
# 查询第一条
# print(mongo_collection.find_one())
# 查询所有数据
mydoc = mongo_collection.find()
for x in mydoc:
print('*************************')
print(x)
stockNUm = stockNUm + 1
if x['code'] in result:
continue
else:
# 在量化投资研究中普遍采用后复权数据 新浪财经
stock_zh_a_daily_qfq_df = ak.stock_zh_a_daily(symbol=str(x['code']), adjust="qfq") # 历史行情数据(前复权)
print(stock_zh_a_daily_qfq_df)
print(type(stock_zh_a_daily_qfq_df)) # DataFrame
# DataFrame 日期列转换为字符串
stock_zh_a_daily_qfq_df['date'] = stock_zh_a_daily_qfq_df['date'].astype(str)
# 将 DataFrame 写入MongoDB
data = json.loads(stock_zh_a_daily_qfq_df.T.to_json()).values()
stock_trade = mongo_db[str(x['code'])]
stock_trade.insert_many(data)
finally:
print('error.......')
time.sleep(random.randint(15, 30))
main()
if __name__ == '__main__':
main()
# def stInt_code(stock_num):
# # find_one() 查询得出单一字典;find()则是一个生成器对象能够通过 for val in ret2find: 遍历取出
# print('find one stock...')
# find_re = mongo_collection.find_one({'number': str(stock_num)})
# if find_re == None:
# print('6我股票数字不存在.')
# else:
# print(find_re)
# return find_re
#
#
# input_num = input('输入6位股票数字:')
# st_code = stInt_code(input_num)
# print(st_code['code'])
# print(st_code['name'])
[058量化交易]python获取新浪财经所有行情所有股票数据写入mongodb完整版
最新推荐文章于 2024-03-18 16:02:18 发布