前言:
当前兄弟们对“分页api”大致比较注意,同学们都需要分析一些“分页api”的相关资讯。那么小编在网上汇集了一些有关“分页api””的相关内容,希望大家能喜欢,咱们一起来了解一下吧!这个系列之前的文章:
使用某基金网站的API查询基金净值的历史数据如何使用程序将某基金的历史净值导入到本地进行分析
前一篇文章,我们已经把天天基金网上某基金的历史净值,全部通过分页API调用的方式,下载到了本地:
用分号分隔的四个字段,分别是:
历史日期当天的基金单位净值当天的基金累积净值当天的涨/跌幅
每个text文件存储了一页的API调用结果。
为了便于下一步的统计,我用nodejs,将这些小text文件合并成一个大的text文件。
这个逻辑位于函数mergeFiles里。首先调用fs.readdirSync,采用同步读取的方式,将data文件夹下所有的文件名读取出来,存储在数组subs里,然后遍历这个数组,将每个text文件的内容全部读取出来,存放在变量sWholeContent里。这些文件内容以换行符\n分隔,因此,我在parseFileContent函数里,首先利用\n将每行的内容拆开:
然后再利用";"作为分隔符,读出当天的基金净值历史数据:
最后合并而成的单一text文件如下图所示:
完整代码如下:
const fs = require('fs');var ValuePerDay = require("../model/ValuePerDay.js");var fileWriteTool = require("./fileWriteTool.js");/*return: an array containing fund value data*/function mergeFiles(sFundCode){ let pwd = process.cwd() + "/data"; let sMergedFilePath = pwd + "/" + sFundCode + ".txt"; let aResult = []; let subs = fs.readdirSync(pwd); // we don't need to sort explicitly, as readdirSync // use the same order in file system for( var i = 0; i < subs.length; i++){ let sFilePath = pwd + "/" + subs[i]; let sWholeContent = fs.readFileSync(sFilePath,'utf-8'); aResult.push(parseFileContent(sWholeContent)); } fileWriteTool(aResult,sMergedFilePath);}function parseFileContent(sContent){ const aLines = sContent.split("\n"); for( var i = 0; i < aLines.length; i++){ const aFundValue = aLines[i].split(";"); const oFundValue = new ValuePerDay(aFundValue[0], aFundValue[1], aFundValue[2], formatRate(aFundValue[3])); return oFundValue; }}function formatRate(sRaw){ if( sRaw === ""){ return 0; } return parseFloat(sRaw.replace("%", ""));}module.exports = mergeFiles;
标签: #分页api