栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号