in reply to Re: use WWW::Mechanize or LWP to interface with WEB
in thread use WWW::Mechanize or LWP to interface with WEB

Thanks alot David, One issue I had before was that the html code taken from the site that I am running against of (http://www.ancestry.com/) is using
<input id="blabla"/> instead of <field name="blabla/>... How can we handle this issue. I tried the code that you submitted but I was getting a similar issue that I got before which was
There is no form with the requested fields at D:/PerlWorkSpace/Research/Genealogy/gen.pl line 226 Died at D:/Perl/lib/WWW/Mechanize.pm line 1715, <STDIN> line 1.
  • Comment on Re^2: use WWW::Mechanize or LWP to interface with WEB

Replies are listed 'Best First'.
Re^3: use WWW::Mechanize or LWP to interface with WEB
by erroneousBollock (Curate) on Nov 16, 2007 at 07:04 UTC
    No field names, eh?

    Try something like this:

    use WWW::Mechanize; use strict; my $url = 'http://server/path/to/form.html'; my $mech = WWW::Mechanize->new(); $mech->get($url); die "can't get page!" unless $mech->success && $mech->content =~ /look for something/; die "can't find form!" unless $mech->form_number(0); my @values = ('learn', 'perl', [option => 'M']); die "couldn't fill out form!" unless $mech->set_visible(@values) == 3; $mech->submit; die "can't submit form!" unless $mech->success && $mech->content =~ /something useful/;

    Any better?

    -David

      Thanks David,
      Good news and not so good news, I don't get the error anymore but I nothing happens either, I had the feeling that WWW::Mechanize should fire up the web browser... Have I misunderstood...?
      One other thing, If you take look at source of $url the website has a "form tag" before the form that I want to use... in that case should be using (2)..?
      my $url = 'http://www.ancestry.com/'; my $mechObject = WWW::Mechanize->new(); $mechObject->get($url); die "can't get page!" unless $mechObject->success; die "can't find form!" unless $mechObject->form_number(0); my @values = ('learn', 'perl', [option => 'M']); die "couldn't fill out form!" unless $mechObject->set_visible(@values) == 3; $mechObject->submit; die "can't submit form!" unless $mechObject->success;
      learnperl
        $mech->form_number(0) is the first form,
        $mech->form_number(1) is the second form,
        and so on...

        Good news ... I don't get the error anymore
        Excellent.

        but I nothing happens
        Perfect!

        I had the feeling that WWW::Mechanize should fire up the web browser
        No, WWW::Mechanize acts like a web-browser, it doesn't run one.

        If you got no errors along the way (and you actually had put something useful in those two regular expressions) you can be pretty sure it worked fine.

        Update: Ah, I see you removed the regexp tests.
        Those are there to see that the resulting page "looks like" the page you expect to see. Removing those tests stops you from knowing if your truly succeeded.

        To be sure, consult the site you posted it to.

        -David.