基金数据目录  

1.场外基金清单(列表)

2.基金净值(建议直接调用相关API接口 tushare and AKshare)

3.业绩排行        4.基金评级        5.基金经理        6.基金公司

1.1关于 场外基金清单 我们可以通过天天基金网或者相关API接口获得,但是通过比较相关数据发现数据存在一定的差异,请谨慎核对使用;

第一种方案:通过天天网爬虫获取 基金清单,直接上代码如下:

import os
import re   
import sys
import time 
import random
import datetime
import pandas as pd

import urllib.request
import requests
from bs4 import BeautifulSoup  
from pyquery import PyQuery

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from lxml import etree
import pymysql 
from sqlalchemy import create_engine


#mysql数据存储接口
engine= create_engine('mysql+mysqlconnector://root:******@127.0.0.1:3306/organization?charset=utf8')
pd.io.sql.to_sql(concat_dataset,'find_codes_infos',con=engine,index=False,if_exists='replace')

# 基金清单列表
#基金类型数据
url = "http://fund.eastmoney.com/js/fundcode_search.js"

page = urllib.request.urlopen(url)   
contents = page.read()   
soup = BeautifulSoup(contents,"html.parser")  

find_manager_info1 = []
find_manager_info2 = []
find_manager_info3 = []
find_manager_info4 = []
find_manager_info5 = []
find_manager_info6 = []
find_manager_info7 = []


for find_manager_info in json.loads(soup.text[soup.text.find("[["):soup.text.find("]]")+2]):
#     print(find_manager_info[2])
    find_manager_info1.append(find_manager_info[0])
    find_manager_info2.append(find_manager_info[1])
    find_manager_info3.append(find_manager_info[2])
    find_manager_info4.append(find_manager_info[3])
    find_manager_info5.append(find_manager_info[3].split("-")[0])
    try:
        find_manager_info6.append(find_manager_info[3].split("-")[1])
    except:
        find_manager_info6.append(find_manager_info[3])
    find_manager_info7.append(find_manager_info[4])

find_manager_info = pd.DataFrame([find_manager_info1,find_manager_info2,find_manager_info3,find_manager_info4,find_manager_info5,find_manager_info6,find_manager_info7]).T
find_manager_info.columns = ['find_manager_info1','find_manager_info2','find_manager_info3','find_manager_info4','find_manager_info5','find_manager_info6','find_manager_info7']


find_manager_info = find_manager_info.drop_duplicates(subset=['find_manager_info1', 'find_manager_info2','find_manager_info3','find_manager_info4'], keep='first')

find_manager_info = find_manager_info.reset_index(drop=True)
find_manager_info = find_manager_info.astype(object).where(pd.notnull(find_manager_info), None)

#数据保持存储
# find_manager_info
pd.io.sql.to_sql(find_manager_info,'find_codes_infos', con=engine, index=False, if_exists='append')

MySQL存储结果展示:

 

第二种方案:采用相关接口Tushare 和 AKshare

import akshare as ak
fund_em_fund_name_df = ak.fund_em_fund_name()
print(fund_em_fund_name_df)

 

关于Tushare公墓基金列表,相关API接口操作和要求如下tushare.fund_basic():

 

总结:关于Tushare和AKshare的公墓基金接口各自都一定优势,但是tushare需要一定权限采用调用接口,所以个人更喜欢亲手撸这样好处是自己对数据质量比较可控;

关于其他部分数据等明天再写。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐