5

不久前我写了一个 perl 脚本,它登录到我的网上银行,每天通过电子邮件将我的余额和一个小报表发给我。我发现它对于跟踪我的财务状况非常有用。唯一的问题是我只使用 perl 和 curl 编写它,它非常复杂且难以维护。在我的银行更改了他们的网页的几次实例之后,我厌倦了调试它以使其保持最新状态。

那么以易于维护的方式编写这样的程序的最佳方法是什么?我想用 Perl 或 Java 编写一个设计良好的版本,当银行不可避免地摆弄他们的网站时,它很容易更新。

4

7 回答 7

13

在 Perl 中,类似的东西WWW::Mechanize已经可以使您的脚本更加简单和健壮,因为它可以在网站以前的响应中找到 HTML 表单。您可以填写这些表格来准备新的请求。例如:

my $mech = WWW::Mechanize->new();
$mech->get($url);
$mech->submit_form(
    form_number => 1,
    fields      => { password => $password },
);
die unless ($mech->success);
于 2009-11-09T11:57:35.073 回答
8

WWW::MechanizeWeb::Scraper的组合是让我工作效率最高的两个工具。在catalyzed.org上有一篇关于这种组合的好文章

于 2009-11-09T12:17:34.290 回答
6

如果我要给你一个建议,那就是使用XPath来满足你所有的抓取需求。避免使用正则表达式。

于 2009-11-09T11:37:06.760 回答
2

嗯,刚找到

金融::银行::Natwest

这是专门为我的银行准备的 perl 模块!没想到会这么容易。

于 2009-11-09T11:20:05.513 回答
1

许多银行以标准格式发布他们的数据,MS Money 或 Quicken 等个人理财包通常使用这种格式下载交易信息。您可以使用相同的 API 查找该钩子并下载,然后解析您的数据(例如使用Spreadsheet::ParseExcel解析 Excel 文档,使用Finance::QIF加速文档)。

编辑(回复评论):您是否考虑过联系您的银行并询问他们如何以编程方式登录您的帐户以下载财务数据?许多/大多数银行都有一个用于此的 API(Quicken 等使用它,如上所述)。

于 2009-11-09T17:54:05.747 回答
1

这里有一个当前最新的 Ruby 实现:

http://github.com/warm/NatWoogle

于 2009-12-14T22:40:32.603 回答
0

使用 perl 和 web::scraper 包: 链接文本

于 2010-05-10T13:20:00.260 回答