代码之家  ›  专栏  ›  技术社区  ›  Benj

写一个可维护的web抓取应用程序的最佳方法是什么?

  •  5
  • Benj  · 技术社区  · 15 年前

    不久前我写了一个Perl脚本,它登录到我的网上银行,每天给我发一封余额和一份小报表。我发现它对跟踪我的财务状况非常有用。唯一的问题是我只是使用Perl和Curl编写它,它非常复杂,很难维护。在我的银行修改了他们的网页几次之后,我厌倦了调试它来保持更新。

    那么,以一种易于维护的方式编写这样一个程序,最好的方法是什么呢?我想在Perl或Java中编写一个很好的工程版本,当银行不可避免地篡改他们的网站时,它很容易更新。

    7 回复  |  直到 15 年前
        1
  •  13
  •   Bruno De Fraine    15 年前

    在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);
    
        2
  •  8
  •   singingfish    15 年前

    结合 WWW::Mechanize Web::Scraper 这两个工具使我的工作效率最高。有一篇关于这个组合的好文章 catalyzed.org

        3
  •  6
  •   Sinan Ünür    15 年前

    如果我给你一个建议,那就是 XPath 满足你所有的刮伤需要。避免正则表达式。

        4
  •  2
  •   innaM    15 年前

    嗯,刚刚找到

    Finance::Bank::Natwest

    这是专为我的银行设计的Perl模块!没想到会这么简单。

        5
  •  1
  •   Ether    15 年前

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

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

        6
  •  1
  •   anonymous    15 年前

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

    http://github.com/warm/NatWoogle

        7
  •  0
  •   juFo    15 年前

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