سؤال

كتبت برنامج perl script منذ فترة قام بتسجيل الدخول إلى الخدمات المصرفية عبر الإنترنت وإرسالها بالبريد الإلكتروني إلى رصيدي وبيان صغير كل يوم. لقد وجدت أنها مفيدة للغاية لتتبع أموالي. المشكلة الوحيدة هي أنني كتبت ذلك فقط باستخدام Perl وحلل وكانت معقدة للغاية وصعبة الحفاظ عليها. بعد عدد قليل من الحالات من بنكي تغيير صفحة الويب الخاصة بي، سئمت من تصحيح الأخطاء للحفاظ عليها حتى الآن.

فما هي أفضل طريقة لكتابة مثل هذا البرنامج بطريقة سهلة الصيانة؟ أود أن أكتب إصدارا جيدا مهندسا جيدا في Perl أو Java الذي سيكون من السهل تحديثه عندما يقوم البنك بحتات بتهمة موقع الويب الخاص بهم.

هل كانت مفيدة؟

المحلول

في بيرل، شيء مثل 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 :: ميكانيكية و الويب :: مكشطة هي الأدواتتين التي تجعلني أكثر إنتاجية. هناك مقالة لطيفة حول هذا الجمع في catalyzed.org.

إذا كنت أعطيك نصيحة واحدة، فستكون في استخدامها XPath. لجميع احتياجات تجريف الخاص بك. تجنب regexes.

هم، وجدت فقط

المالية :: البنك :: Natwest

وهي وحدة بيرل على وجه التحديد لبناني! لم يكن يتوقع أن يكون الأمر بهذه السهولة.

تنشر الكثير من البنوك بياناتها بتنسيق قياسي، يستخدم عادة من قبل حزم التمويل الشخصية مثل MS Money أو Quicken لتحميل معلومات المعاملة. يمكنك البحث عن هذا الخطاف والتنزيل باستخدام نفس API، ثم تحليل البيانات في نهايتك (مثل تحليل مستندات Excel مع جدول البيانات :: ParseEceScel., وسريعة مستندات مع المالية :: QIF.).

تحرير (الرد على التعليق): هل فكرت في الاتصال بنكك وتطلب منهم كيفية تسجيل الدخول برمجيا إلى حسابك من أجل تنزيل البيانات المالية؟ العديد من / معظم البنوك لديها واجهة برمجة تطبيقات لهذا (والتي تستثنيها، كما هو موضح أعلاه).

هناك تطبيق Ruby حاليا حاليا هنا:

http://github.com/warm/natwoogle.

استخدم Perl وحزمة مكشطة الويب ::رابط النص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top