2009-11-09 39 views
5

Tôi đã viết một kịch bản perl một thời gian trước đây đã đăng nhập vào ngân hàng trực tuyến của tôi và gửi email cho tôi số dư của tôi và một tuyên bố nhỏ mỗi ngày. Tôi thấy nó rất hữu ích cho việc theo dõi tài chính của tôi. Vấn đề duy nhất là tôi đã viết nó chỉ bằng cách sử dụng perl và curl và nó khá phức tạp và khó duy trì. Sau một vài trường hợp ngân hàng của tôi thay đổi trang web của họ, tôi đã chán ngấy việc gỡ lỗi để giữ cho nó cập nhật.Cách tốt nhất để viết ứng dụng duyệt web có thể duy trì là gì?

Vậy cách tốt nhất để viết chương trình như vậy theo cách dễ bảo trì như thế nào? Tôi muốn viết một phiên bản tốt đẹp được thiết kế trong cả hai Perl hoặc Java mà sẽ dễ dàng cập nhật khi các ngân hàng chắc chắn fiddle với trang web của họ.

Trả lời

13

Trong Perl, một cái gì đó như WWW::Mechanize có thể đã làm cho tập lệnh của bạn đơn giản và mạnh mẽ hơn, bởi vì nó có thể tìm thấy biểu mẫu HTML trong các câu trả lời trước đó từ trang web. Bạn có thể điền vào các biểu mẫu này để chuẩn bị yêu cầu mới. Ví dụ:

my $mech = WWW::Mechanize->new(); 
$mech->get($url); 
$mech->submit_form(
    form_number => 1, 
    fields  => { password => $password }, 
); 
die unless ($mech->success); 
2

Hmm, chỉ cần tìm thấy

Finance::Bank::Natwest

Đó là một module perl đặc biệt cho ngân hàng của tôi! Không mong đợi nó khá dễ dàng.

+0

Hmm, không giống như rằng kịch bản perl làm việc nữa thật đáng buồn. Cập nhật lần cuối 2003! – Benj

+0

Ồ. Nó đã cũ rồi. Nhưng mặc dù nó rõ ràng đã không được duy trì, nó vẫn có thể được duy trì? – innaM

+0

Có, nó trông khá tốt bằng văn bản. Tôi đã gửi email cho tác giả để hỏi anh ta liệu anh ấy có sử dụng nó một cách cá nhân hay không. – Benj

6

Nếu tôi cung cấp cho bạn một lời khuyên, nó sẽ là sử dụng XPath cho tất cả các nhu cầu cạo của bạn. Tránh các regex.

+1

+1 chắc chắn một cái gì đó với một trình phân tích cú pháp HTML gốc sẽ tốt hơn nhiều trong thời gian dài. – bobince

+0

Có, giải pháp trước đây của tôi là regexp nặng, tôi chắc chắn sẽ tránh rằng thời gian này nếu có thể. – Benj

+0

Trừ khi HTML là rất đặc biệt hoặc bạn đang sử dụng 'HTML :: TreeBuilder :: XPath', điều này nhất định là bực bội. –

8

Một sự kết hợp của WWW::MechanizeWeb::Scraper là hai công cụ mà làm cho tôi hiệu quả nhất. Có một bài viết hay về sự kết hợp đó tại catalyzed.org

+0

+1 cho Web :: Scraper. Tôi đã tìm thấy nó khó để cài đặt, nhưng tôi đã có thể thay thế các kịch bản cạo lớn với khoảng 3 dòng Web :: Scraper. –

1

Rất nhiều ngân hàng xuất bản dữ liệu ở định dạng chuẩn, thường được sử dụng bởi gói tài chính cá nhân như MS Money hoặc Quicken để tải xuống thông tin giao dịch. Bạn có thể tìm kiếm móc đó và tải xuống bằng cách sử dụng cùng một API và sau đó phân tích cú pháp dữ liệu ở cuối của bạn (ví dụ: phân tích cú pháp tài liệu Excel với Spreadsheet::ParseExcel và Quicken tài liệu với Finance::QIF).

Chỉnh sửa (trả lời nhận xét): Bạn đã cân nhắc việc liên hệ với ngân hàng của mình chưa và hỏi họ cách bạn có thể đăng nhập vào tài khoản theo cách lập trình để tải xuống dữ liệu tài chính? Nhiều/hầu hết các ngân hàng có một API cho điều này (mà Quicken vv sử dụng, như mô tả ở trên).

+0

Xin cảm ơn vì câu trả lời, nhưng nó không thực sự phân tích cú pháp dữ liệu ngân hàng mà tôi đang theo dõi, nó đăng nhập và tự động xoay quanh môi trường ngân hàng mà tôi muốn. – Benj

Các vấn đề liên quan