2020-12-14 爬虫获取单只基金数据

最近学习爬虫,试着写了天天基金网获取单只基金的方法,记录下:

import requests
import execjs
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

class GET_DATA:
    def __init__(self, code, T):
        self.code = code
        self.T = T
        self.url="http://fund.eastmoney.com/pingzhongdata/"+self.code+".js?v="+self.T
        
    def get_content(self):
        content = requests.get(self.url)
        jsContent = execjs.compile(content.text)
        return jsContent   
    
    def get_data_base(self):
    #获取某基金的基本信息
        T = self.T
        jsContent = self.get_content()
        
        name=jsContent.eval('fS_name')
        code=jsContent.eval('fS_code')
        fund_Rate=jsContent.eval('fund_Rate')  #现费率
        fund_minsg=jsContent.eval('fund_minsg')  #最小申购金额
        stockCodes=jsContent.eval('stockCodes')  #基金持仓股票代码
        zqCodes=jsContent.eval('zqCodes')  #基金持仓债券代码
        stockCodesNew=jsContent.eval('stockCodesNew')  #基金持仓股票代码(新市场号)
        zqCodesNew=jsContent.eval('zqCodesNew')  #基金持仓债券代码(新市场号)
        
        imf_base = [T,name,code,fund_Rate,fund_minsg,
                    stockCodes,zqCodes,stockCodesNew,zqCodesNew]
        imf_base_df = pd.DataFrame(imf_base).T
        imf_base_df.columns=['T','name','code','fund_Rate','fund_minsg',
                            'stockCodes','zqCodes','stockCodesNew','zqCodesNew']
        return imf_base_df
     

    def get_data_others(self):
    #获取某基金某一天的其他信息
        jsContent = self.get_content()    
        
        syl_1n = jsContent.eval('syl_1n')
        syl_6y = jsContent.eval('syl_6y')
        syl_3y = jsContent.eval('syl_3y')
        syl_1y =jsContent.eval('syl_1y')
        
        Data_fundSharesPositions = jsContent.eval('Data_fundSharesPositions') #/*股票仓位测算图*/
        netWorthTrendData=jsContent.eval('Data_netWorthTrend')  #单位净值走势数据
        ACWorthTrendData=jsContent.eval('Data_ACWorthTrend')  #累计净值走势数据
        Data_grandTotal=jsContent.eval('Data_grandTotal')  #累计收益率走势
        
        Data_rateInSimilarType = jsContent.eval('Data_rateInSimilarType')  #同类排名走势
        Data_rateInSimilarPersent = jsContent.eval('Data_rateInSimilarPersent')   #同类排名百分比
        Data_holderStructure = jsContent.eval('Data_holderStructure')   #持有人结构
        Data_assetAllocation =jsContent.eval('Data_assetAllocation')    #资产配置

        Data_performanceEvaluation=jsContent.eval('Data_performanceEvaluation')  #业绩评价 ['选股能力', '收益率', '抗风险', '稳定性','择时能力']
        Data_currentFundManager=jsContent.eval('Data_currentFundManager')  #现任基金经理
        Data_buySedemption=jsContent.eval('Data_buySedemption')  #申购赎回
        swithSameType=jsContent.eval('swithSameType')  #同类型基金涨幅榜(页面底部通栏)

        imf_others = [syl_1n,syl_6y,syl_3y,syl_1y,
                      Data_fundSharesPositions,netWorthTrendData,ACWorthTrendData,Data_grandTotal,                   
                      Data_rateInSimilarType,Data_rateInSimilarPersent,Data_holderStructure,Data_assetAllocation,                       
                       Data_performanceEvaluation,Data_currentFundManager,Data_buySedemption,swithSameType]
        imf_others_df = pd.DataFrame(imf_others).T
        imf_others_df.columns=['syl_1n','syl_6y','syl_3y','syl_1y',
                               'Data_fundSharesPositions','netWorthTrendData',
                                'ACWorthTrendData','Data_grandTotal',
                                'Data_rateInSimilarType','Data_rateInSimilarPersent',
                                'Data_holderStructure','Data_assetAllocation',                                                                           
                                'Data_performanceEvaluation','Data_currentFundManager',
                                'Data_buySedemption','swithSameType']

        return imf_others_df

猜你喜欢

转载自blog.csdn.net/weixin_38192254/article/details/111168332
今日推荐