编写可维护的Web抓取应用程序的最佳方法是什么?

时间:2009-11-09 11:17:10

标签: perl webforms screen-scraping html-content-extraction

我刚刚写了一个perl脚本,它登录了我的网上银行,并每天通过电子邮件发送给我我的余额和一个迷你语句。我发现它对跟踪我的财务状况非常有用。唯一的问题是我使用perl和curl编写它并且它非常复杂且难以维护。在我的银行改变他们的网页的几个实例后,我厌倦了调试它以使其保持最新状态。

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

7 个答案:

答案 0 :(得分: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);

答案 1 :(得分:8)

WWW::MechanizeWeb::Scraper的组合是让我最有成效的两个工具。这篇关于catalyzed.org

的组合的文章很精彩

答案 2 :(得分:6)

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

答案 3 :(得分:2)

嗯,刚刚找到

Finance::Bank::Natwest

这是专门针对我的银行的perl模块!不要指望它那么容易。

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

目前有一个最新的Ruby实现:

http://github.com/warm/NatWoogle

答案 6 :(得分:0)

使用perl和web :: scraper包: link text