Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7245[/thread]

WWW::Mechanize: Formular gibt es nicht...

Leser: 3


<< >> 7 Einträge, 1 Seite
J-jayz-Z
 2005-08-30 19:46
#57544 #57544
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich hab hier vor, mit WWW::Mechanize Daten in ein Formular einzutragen, und das Ergebniss auszuwerten. Ich habe allerdings kleine Probleme mit vermutlich dem Javascript im Quelltext. Im Quelltext steht folgendes, um ein Formular zu öffnen:
Code: (dl )
<FORM METHOD=POST NAME=FltWiz ACTION="/pub/agent.dll?tovr=-1294767292&ps3u=" >

Wenn ich dann allerdings ein kleines Script schreibe, das Daten in city1 eintragen soll, das wie folgt aussieht:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $url = "http://www.expedia.com/pub/agent.dll?qscr=fltw&rfrr=-1066";

$mech->get( $url );
$mech->form_name( "FltWiz" );

$mech->set_fields("city1" => "Frankfurt");

bekomme ich nur diese meldung:
Code: (dl )
1
2
 There is no form named "FltWiz" at ./mechanize.pl line 11
No form defined at ./mechanize.pl line 13

und mit
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $url = "http://www.expedia.com/pub/agent.dll?qscr=fltw&rfrr=-1066";

$mech->get( $url );
print $_ . "\n" for @{ $mech->forms() };

bekomme ich ebenfalls keine Ausgabe, wobei mir hier eigentlich die Formulare der Seite angezeigt werden sollten...
Kann mir da vielleicht jemand helfen?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
ptk
 2005-08-30 21:35
#57545 #57545
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Benutz mal zum Debuggen WWW::Mechanize::Shell. Da gibt es eine Funktion, die alle erkannten Forms ausgibt (glaube ich jedenfalls).
J-jayz-Z
 2005-08-30 22:15
#57546 #57546
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
@ptk: Das sollte
Code: (dl )
print $_ . "\n" for @{ $mech->forms() };

auch machen... :(
Da bekomme ich gar nichts angezeigt
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
esskar
 2005-08-31 02:51
#57547 #57547
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
der fehler liegt bei dir:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl
use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $url = "http://www.expedia.com/pub/agent.dll?qscr=fltw&rfrr=-1066";

$mech->get( $url, ":content_file"=>"c:\\temp.tmp");


in der datei "c:\\temp.tmp" ist keine form zu finden!
esskar
 2005-08-31 03:18
#57548 #57548
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
so gehts

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
my $url = "http://www.expedia.com/pub/agent.dll?qscr=fltw&rfrr=-1066&&zz=" .time() . "&";

print "[$url]\n";

$mech->add_header("Cookie" => "jscript=1");
$mech->get( $url, ":content_file"=>"c:\\temp.tmp");
esskar
 2005-08-31 04:47
#57549 #57549
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use warnings;

use LWP::UserAgent;

my $lwp = new LWP::UserAgent;

$lwp->default_header("Cookie" => "jscript=1");

my $resp = $lwp->post("http://www.expedia.com/pub/agent.dll?qscr=fltw&rfrr=-1066&&zz=" .time() . "&",
{ city1 => 'Frankfurt',
pcity1=> 'Berlin, Germany (BER-All Airports)',
date1 => '09/10/05',
date2 => '11/10/05'
}
);

print $resp->content;


aber du musst wohl alle felder setzen => also auch hidden fields und die checkboxen und so :-(
J-jayz-Z
 2005-09-02 02:10
#57550 #57550
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
mal eine andere Frage:
Wenn ich mit LWP::UserAgent diese Daten so an die Seite schicke, sind sie ja noch nicht ausgewertet. Übergibt es die Daten auch, wenn ich sie an Seite schicke, die dieses Formular verarbeitet? Also nach drücken des "submit" Buttons?
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< >> 7 Einträge, 1 Seite



View all threads created 2005-08-30 19:46.