Excellent! That is precisely what I was looking for.

Thank you すがま.

BR
Gunnar

On 2014-08-20 00:58, すがま wrote:
Hi.

I use a hand-made function for submitting forms.
The example is only capable of POST method though.

my $tx1 = $ua->get($url);
my $tx2 = submit_form($tx1, 2, {
    foo => $self->{foo},
    bar => $self->{bar},
});

sub submit_form {
    my ($tx, $index, $additional_params) = @_;
    my $dom = $tx->res->dom->find("form")->[$index];
    my %fields;

    $dom->find("*[name]")->each(sub{
        $fields{$_[0]->attr('name')} = $_[0]->attr('value') || '';
    });

    return $ua->post(
$tx->req->url->clone->path($dom->attr('action')),
        form => {
            %fields,
            %{$additional_params || []}
        }
    );
}


(2014/08/20 5:23), Gunnar Strand wrote:
Hi,

I hope this is not off-topic for the list.

I am currently scraping a web page using WWW::Mechanize in a
Mojolicious::Lite application, but I am trying to convert to using the
UserAgent in a non-blocking fashion instead. In WWW::Mechanize speak, I
can say this:

  $ua->submit_form(
                     form_number => 2,
                     fields      => {
                                 foo => $self->{foo},
                                 bar => $self->{bar},
                               },
                   );

but I have been unable found any example on how to do the equivalent
with the UserAgent. All examples seem to involve knowing the form action
and specific parameters, while I would simply like to ignore everything
except some specific parameters, so that it is as loosely coupled to the
form as possible.

I assume that somehow using the $tx->res structure is the way to go, but
I haven't been able to figure it out yet. A nudge in the right direction
would be much appreciated.

BR
Gunnar

--
You received this message because you are subscribed to the Google
Groups "Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
To post to this group, send email to [email protected]
<mailto:[email protected]>.
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.


--
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to