Python 爬虫天天基金数据——基金清单

基金数据目录  

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需要一定权限采用调用接口,所以个人更喜欢亲手撸这样好处是自己对数据质量比较可控;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值