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');