保守可能な Web スクレイピング アプリを作成する最良の方法は何ですか?
-
19-09-2019 - |
質問
私は少し前に、オンライン バンキングにログインして残高とミニ明細書を毎日電子メールで送信する Perl スクリプトを作成しました。自分のお金の状況を把握するのにとても便利だと思いました。唯一の問題は、perl とcurl だけを使用してこのコードを作成したため、非常に複雑で保守が困難だったということです。私の銀行が Web ページを変更したことが何度かあった後、最新の状態に保つために Web ページをデバッグするのにうんざりしました。
では、そのようなプログラムを保守しやすい方法で書くための最良の方法は何でしょうか?銀行が必然的に Web サイトをいじる場合に簡単に更新できる、うまく設計されたバージョンを Perl または Java で書きたいと考えています。
解決
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);
他のヒント
の組み合わせ WWW::機械化 そして ウェブ::スクレーパー は私の生産性を最も高める 2 つのツールです。この組み合わせについての素晴らしい記事があります。 触媒化.org
、それはすべてのためにのXPath に使用することですあなたこするニーズ。正規表現を避けます。
の銀行の多くは、一般的にトランザクション情報をダウンロードするには、このようなMSマネーやQuickenのような個人金融パッケージで使用される標準的な形式で自分のデータを公開します。あなたは<のhref = "http://search.cpan.org/~mmcgillis/Finance-QIF-3.00と同じAPIを使用して、そのフックとダウンロードを探し、その後、あなたの最後のデータを解析(例えば、解析Excel文書ができhttp://search.cpan.org/~mmcgillis/Finance-QIF /lib/Finance/QIF.pm "のrel = "nofollowをnoreferrer"<のhref =と>スプレッドシート:: ParseExcelする、およびQuickenのドキュメント" -3.00 / libに/金融/ QIF.pm」のrel = "nofollowをnoreferrer">金融:: QIF に)。
編集(返信はコメントする):あなたがあなたの銀行に連絡し、あなたがプログラムの財務データをダウンロードするために、あなたのアカウントにログインすることができますどのようにそれらを尋ねると考えていますか?多くの/ほとんどの銀行は、(上記のようにQuickenのは、など、を利用している)、このためのAPIを持っています。
現在の日付までのRubyの実装がここにあります:
Perlとウェブ::スクレーパーパッケージを使用します。 リンクテキストの