前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >花10秒获取全部基金年报,看看大佬们都说了啥

花10秒获取全部基金年报,看看大佬们都说了啥

作者头像
量化小白
发布2023-04-03 20:30:46
3740
发布2023-04-03 20:30:46
举报

年初之前写过一篇《用python批量获取公募基金季报pdf》的推文,当时恰好是三季度报告披露不久。最近到了基金年报扎堆的时候,把上次的代码拿来改一改,10秒钟可以爬到所有基金的年报,觉得不错可以点个在看支持一下。截止发文,有1980只基金公布了年报。

我们爬到对应的基金名称和pdf对应网址,就可以把基金报告下下来了,正好看看大佬们对于今年的形式都有何看法。

代码整体和上次差不多,只是对getpdfurl函数做了修改,修改后的函数见下,获取修改后的代码文件请在后台回复“基金年报”。

代码语言:javascript
复制
def getpdfurl(codes,sdate,edate):
    sdate = pd.Timestamp(sdate).strftime('%Y-%m-%d')
    edate = pd.Timestamp(edate).strftime('%Y-%m-%d')

    if codes =='':
        stocks = ''
    else:
        
        ords = a[codes]
        stocks = codes + ',' + ords
        
        
    params = {
    'pageNum': '1',
    'pageSize': '30',
    'column': 'fund',
    'tabName': 'fulltext',
    'plate':'' ,
    'stock': stocks,
    'searchkey':'' ,
    'secid':'' ,
    'category': 'category_ndbg_jjgg',
    'trade':'' ,
    'seDate': '{}~{}'.format(sdate,edate),
    'sortName': '',
    'sortType': '',
    'isHLtitle': 'true'}
    
    url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query'
    headers = {"User-Agent": UserAgent(verify_ssl=False).random} 
    response_comment = requests.post(url,params = params,headers = headers )
    res = json.loads(response_comment.text)
    
    n = len(res['announcements'])
    totpages = res['totalpages']
    
    allpdf = [] 
    for i in tqdm(range(1,totpages + 1)):

        params = {
        'pageNum': str(i),
        'pageSize': '30',
        'column': 'fund',
        'tabName': 'fulltext',
        'plate':'' ,
        'stock': stocks,
        'searchkey':'' ,
        'secid':'' ,
        'category': 'category_ndbg_jjgg',
        'trade':'' ,
        'seDate': '{}~{}'.format(sdate,edate),
        'sortName': '',
        'sortType': '',
        'isHLtitle': 'true'}
        
        url = 'http://www.cninfo.com.cn/new/hisAnnouncement/query'
# headers = {"User-Agent": UserAgent(verify_ssl=False).random} 
        response_comment = requests.post(url,params = params )
        res = json.loads(response_comment.text)
                
        
    
        for k in range(n):
            allpdf.append(pd.DataFrame.from_dict(res['announcements'][k],orient='index').T)
# time.sleep(abs(np.random.normal()))

    allpdf = pd.concat(allpdf,axis = 0).reset_index(drop = True)
       
    allpdf = allpdf[['secName','secCode','announcementTitle','adjunctUrl']]
    
    return allpdf

参数code取''时爬取所有基金公告列表,给定基金代码可以获取对应基金的年报。

爬出来数据格式如下

如果要下载对应的pdf,调用getFundReportpdf函数即可,但建议不要直接调用,1980份报告,每个都是百八十页,可能要下几个小时,可以挑几个自己感兴趣的基金下下来看。

举个例子,我们来看看景顺长城新兴成长(260108.OF)。

代码语言:javascript
复制
codes = '260108'
allpdf = getpdfurl(codes,sdate,edate)
getFundReportpdf(allpdf,fpath)

run一下年报就搞定。看看大佬对于后市的观点

另外如果想批量获取所有报告的观点也很容易通过代码实现,对每一篇报告,找到这一节的标题和下一节的标题切出来就可以了,感兴趣的童鞋可以把所有的报告都下下来切一个试试。切不出来的话可以等一等下篇推文,会给出代码。如果自己写的过程碰到问题,也欢迎后台留言提问,下次一起解答。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化小白躺平记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档