13.11.2012
Kategorie: Perl, Programming

Web-Forumulare per Skript absenden

Mit wget kann man in Skripten ganze Webseiten herunterladen. Was aber, wenn man auf diesen Seiten Formulare ausfüllen muss oder sich mit Benutzernamen und Passwort anmelden muss?


Wenn man in einem Perl-Skript Web-Formulare ausfüllen muss, um bestimmte Informationen von einer Webseite herunterzuladen, bietet sich das Perl-Modul WWW::Mechanize an.

Dieses Modul simuliert einen ganzen Webbrowser und lässt den Skript-Programmierer durch Webseiten navigieren wie mit einem normalen Webbrowser. Einzig Javascript ist nicht möglich.

In unserem Beispiel loggen wir uns mit Benutzernamen und Passwort auf einer Webseite ein und laden von dort eine PDF-Datei herunter. Wir kennen den Namen der PDF-Datei nicht, aber wir wissen, dass es der einzige Link auf der Seite ist, der die Zeichenkette ".pdf" enthält, also suchen wir nach diesem Link. Zum Schluss speichern wir die PDF-Datei als "newest.pdf" ab:

#!/usr/bin/perl

use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->agent_alias('Linux Mozilla');

my $username = 'ChuckNorris';
my $password = 'mypassword';

$mech->get('http://www.example.com/login');

$mech->submit_form(form_name => 'LoginForm',
fields => { UserName => $username, Password => $password });

my $link = $mech->find_link(url_regex => qr/.pdf/);
$mech->get($link->url());

$mech->save_content('newest.pdf');


 
Telefon:
E-Mail:
Fax:
Web:

+43 2682 24080
office(at)epb.at
+43 2682 205 7700 9963
zum Kontaktformular