用代码挑选最牛的基金,早日实现经济自由不是梦?

本文阅读 5 分钟
首页 代码,Java 正文

🍊 Java学习:Java从入门到精通总结

小伙伴们大家好呀,不知道大家平时有购买基金理财的习惯吗?众所周知,我们程序员平时就是依靠写代码来作为自己的工作,并且靠这项技能来赚钱的。

那既然我们靠写代码来作为工作,那也可以用它来做一些副业赚钱。相信喜欢理财的同学们都幻想过,将来可不可以由计算机程序来为我们挑选股票、基金,这样就永远不会亏欠啦,提前实现经济自由。

又恰好,小王在浏览github时发现了一个用代码爬取基金网站数据进行分析,进行分析后挑选出合适的基金,下面就进入正题带大家看一下他是怎么实现的。

img

项目地址

这段代码是由wayofwade开源分享在github上的,喜欢的同学可以为他点亮star~,根据readme.md文件里的说明操作即可运行: img 点击跳转github源网站地址

如果访问github不稳定的同学可以点下面的链接获取这段代码: 「deno-spider-master」

运行方式

deno版: 需提前安装deno

  • 有网络请求的:
deno run --allow-net denoFund.js
  • 读取文件的:
deno run --allow-net --allow-read --allow-write denoFund.js
  • 允许所有权限
deno run --allow-all denoFund.js

node版: 需要安装node最新版本

node nodeFund.js

我对这段代码的理解

其实这段程序的代码量并不大,这里我简单整理一下作者的思路,如有错误的地方,欢迎大家指正。

从代码里不难发现作者定义的「优秀的基金」的标准:

1. 基金成立的时间要长一点: 成立三年以上 2. 基金的收益要高: 收益率超过100% img 3. 基金经理必须是靠谱的: 在职时间超过3年 img 4. 基金体量足够大: 超过10亿以上的,毕竟规模越小的基金,波动性越大,衡量不出来它的优劣 img

从上面截图的url里可以看出来,作者选择了蛋卷基金这个网站来进行分析,从这个网页里选出优秀的基金(如果想要用其他网站的同学们请修改url地址!)

蛋卷基金的首页不用登陆就可以查看排行榜: img

img 这段代码就可以查询出排行前XXX名的基金,过滤出了优秀基金的ID之后,就可以根据ID查询基金了,例如我在网页上搜一个001678: img 网页地址为: https://danjuanfunds.com/funding/001678?channel=1300100141

我们可以通过url来获取数据: https://danjuanfunds.com/djapi/fund/001678

其中最后一个数字就是传入的基金ID:

img

有了上面那些方法之后,我们就可以一直请求接口来获取每一个基金的详情了,并按照我们最开始定义的好基金的标准来进行过滤:

const getAllFundData = async () => { 
     // 获取所有的基金ID
     await getFundList();
     // 循环请求接口获取基金详情并过滤
     for (let i = 0; i < fundIdList.length; i++) { 
         const  id = fundIdList[i]
         const myJson = await getFundDetail(id)
         const managerDetail = await getManagerDetail(id)
         const managerList = managerDetail.data.manager_list.length && managerDetail.data.manager_list[0]

         // 基金经理管理时间
         const keepTime = (managerList.achievement_list || []).filter((item) => { 
             return item.fund_code === id
         })[0]?.post_date
         const fundDetail = getFilterData({ ...myJson, keepTime})
         const total = fundDetail.totalMoney.split('亿');
         // 成立超过7年的基金
         const fundTime = 1000 * 60 * 60 * 24 * 30 * 12 * 7
         // 基金经理在职时间
         const manegeTime = 1000 * 60 * 60 * 24 * 30 * 12 * 3
         const nowTime = new Date().getTime()
         const startTime = new Date(fundDetail.startDate).getTime()
         const keepTimeStamp = new Date(keepTime).getTime()
         if (nowTime - startTime > fundTime && total[0] && total[0] > 10 && nowTime - keepTimeStamp > manegeTime) { 
             goodFundList.push(fundDetail)
         }
     }
     writeJson('./fundData.json', goodFundList)
     const endTime = new Date().getTime()
     console.log('-----deno--文件之后消耗时间', endTime - startTime)
 }

将查询到的数据经过上面所有条件过滤以后,就可以将得到的优秀基金列表放到文件里了(这里选用的是将其写到json文件里):

function writeJson(path, data) { 
     try { 
         const endTime = new Date().getTime()
         console.log('-----deno--消耗时间', endTime - startTime)
         Node.writeTextFileSync(path, JSON.stringify(data));
         return "Written to " + path;
     } catch (e) { 
         return e.message;
     }
 }

百度一个在线jsonzhuanexcel的工具即可很容易的展现出代码为我们挑选的所有基金啦:

img

最后一列使用网页工具转的时候格式是乱的,可以先忽略掉,只看前面的部分

最后的最后还是要提醒大家:

  • 基金有风险,买入须谨慎
  • 爬虫的时候建议不要太频繁,把对方网站搞挂了也是有风险的
  • 最各位小伙伴们早日实现财富自由~~~
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://wangjiawei.blog.csdn.net/article/details/122049695
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复