是否有任何银行通过任何形式的API提供个人账户的数据源? 我基本上是想在不登录他们的网站的情况下检查账户余额。
我记得曾经阅读过一个通用银行协议……也许mint.com使用它来访问帐户? mint.com与每个银行有特殊关系,还是我可以利用他们的方法?
编辑:根据我的要求,我只对访问自己的财务数据感兴趣。
是否有任何银行通过任何形式的API提供个人账户的数据源? 我基本上是想在不登录他们的网站的情况下检查账户余额。
我记得曾经阅读过一个通用银行协议……也许mint.com使用它来访问帐户? mint.com与每个银行有特殊关系,还是我可以利用他们的方法?
编辑:根据我的要求,我只对访问自己的财务数据感兴趣。
在网上查找开放式金融交换格式(OFX)。那是银行业的通用格式。(我认为)。
API接入
您需要与每个机构核实其是否提供用于直接访问的API。一些机构将提供通过拨号线路访问的服务,而其他机构则提供更现代的基于IP的服务。每个机构都可能要求您进行注册并支付费用。
更简单的方法是要求用户从银行下载其对账单,并将其导入到您的应用程序中。大多数在线银行系统都提供此功能。
格式
无论哪种方式,银行支持几种格式(取自此处)。
您可能会看到OFX被称为Quickbooks、Microsoft Money 2005或Sage Line 50。QIF有时被称为Quicken 98或2000,或Microsoft Money 2003。
CSV格式将针对每个机构进行专门开发的解析逻辑。
谁使用什么格式
支持OFX或QIF格式的英国银行包括:
通过编写一个基础的屏幕爬虫,可以从你的Mint.com账户中提取交易记录。当然,这意味着你必须在那里设置一个账户并让他们为你完成一些脏活。
CasperJS是一个很棒的工具,使得这项任务变得相当简单,你需要安装Casper和它所构建的框架PhantomJS。
var casper = require('casper').create();
casper.start('https://wwws.mint.com/login.event', function() {
this.fill('form#form-login', {
username: 'mintusername',
password: 'mintpassword'
}, true);
}).then(function() {
this.echo('Downloading transaction history...')
this.download('https://wwws.mint.com/transactionDownload.event', '/path/to/save/transactions.csv');
});
casper.run(function() {
this.echo('Done.').exit();
});
这个脚本登录到你的Mint账户,下载你的交易记录(以CSV文件形式),保存到指定位置。从那里开始,你可以对数据进行任何想做的事情。当然,这个脚本可以扩展以执行更高级的操作,或过滤它所拉取的交易,但作为最佳实践,我建议保持屏幕抓取尽可能简单,并在程序端添加逻辑。
你可以使用Mac OS X的launchd或大多数Linux版本的cron来定期运行此脚本。
对于那些不太在意支付5英镑购买OFX转换器的人,该转换器专门用于处理Nationwide FlexAccount、e-Savings和Creditcards,请尝试Nationwide OFX Converter。
对于其他银行和信用卡,请尝试iCreateOFX Basic,对于投资文件,请尝试iCreateOFX Investment。
有一个标准协议叫做OFX(ofx.net),可能符合您的需求。Microsoft Money和Quicken都使用它来更新数据。