WWW::Mechanize

Auf der Suche nach Automatismen für Browserinteraktion stößt man zwangsläufig auf Mechainze. Mit Mechainze kann man (z.B.) ein Perl-Skript schreiben, das einem das Wunschkennzeichen reserviert. Für Schreibfaule bietet die Mechanize-Shell eine einfache Alternative zum “selber coden”. Startet man Sie (mit perl -MWWW::Mechanize::Shell -eshell), kann man interaktiv durch eine Seite browsen und sich interaktiv bewegen – fast wie mit einem normalen Browser. Hat meine seine Aufgabe erledigt, reicht ein

script DATEINAME

und die ganze Prozedur wird in ein Perl-Skript geschrieben.

Leider erzeugt die Shell nicht immer korrekten/passenden Code (vielleicht auch, weil die letzte Version der Shell vom 9. November 2009 und Mechanize selbst vom 17. August 2009 ist?). Daher hier eine Codeanpassung.

Auswahl aller Checkboxen im Formular:

$agent->form_number(5);

{ local $^W; my $index = 0;
while(my $input = $agent->current_form->find_input(”,’checkbox’,$index)) {
my $value = (grep { defined $_ } ($input->possible_values()))[0];
$agent->tick(”,$value);
$index++;
};
}
{ local $^W; $agent->current_form->value(‘formaction’, ‘messageselect.php’); };
$agent->submit();

Zunächst wird das fünfte Formular der Seite ausgewählt und dann wird nach allen Checkboxen gesucht.

while(my $input = $agent->current_form->find_input(,’checkbox’,$index)) {

muss aber in

while(my $input = $agent->current_form->find_input(undef,’checkbox’,$index)) {

geändert werden – sonst wird nach Checkboxen mit dem Namen ” gesucht und nichts gefunden :-(

Die gefundenen Checkboxen werden dann mit tick ausgewählt, es muss also

$agent->tick(,$value);

in

$agent->tick($input->name,$value);

geändert werden, damit die richtige Box angeklickt wird.

Installation unter Ubuntu:

aptitude install libwww-mechanize-shell-perl

Viel Spaß mit dem kleinen Automatismus ;-)

Tags: ,

Leave a Reply