.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "WWW::Mechanize::Cookbook 3" .TH WWW::Mechanize::Cookbook 3 "2023-04-27" "perl v5.16.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" WWW::Mechanize::Cookbook \- Recipes for using WWW::Mechanize .SH "VERSION" .IX Header "VERSION" version 2.17 .SH "INTRODUCTION" .IX Header "INTRODUCTION" First, please note that many of these are possible just using LWP::UserAgent. Since \f(CW\*(C`WWW::Mechanize\*(C'\fR is a subclass of LWP::UserAgent, whatever works on \f(CW\*(C`LWP::UserAgent\*(C'\fR should work on \f(CW\*(C`WWW::Mechanize\*(C'\fR. See the lwpcook man page included with \&\s-1LWP\s0. .SH "BASICS" .IX Header "BASICS" .SS "Launch the WWW::Mechanize browser" .IX Subsection "Launch the WWW::Mechanize browser" .Vb 1 \& use WWW::Mechanize; \& \& my $mech = WWW::Mechanize\->new( autocheck => 1 ); .Ve .PP The \f(CW\*(C`autocheck => 1\*(C'\fR tells Mechanize to die if any \s-1IO\s0 fails, so you don't have to manually check. It's easier that way. If you want to do your own error checking, leave it out. .SS "Fetch a page" .IX Subsection "Fetch a page" .Vb 2 \& $mech\->get( "http://search.cpan.org" ); \& print $mech\->content; .Ve .PP \&\f(CW\*(C`$mech\->content\*(C'\fR contains the raw \s-1HTML\s0 from the web page. It is not parsed or handled in any way, at least through the \f(CW\*(C`content\*(C'\fR method. .SS "Fetch a page into a file" .IX Subsection "Fetch a page into a file" Sometimes you want to dump your results directly into a file. For example, there's no reason to read a \s-1JPEG\s0 into memory if you're only going to write it out immediately. This can also help with memory issues on large files. .PP .Vb 2 \& $mech\->get( "http://www.cpan.org/src/stable.tar.gz", \& ":content_file" => "stable.tar.gz" ); .Ve .SS "Fetch a password-protected page" .IX Subsection "Fetch a password-protected page" Generally, just call \f(CW\*(C`credentials\*(C'\fR before fetching the page. .PP .Vb 3 \& $mech\->credentials( \*(Aqadmin\*(Aq => \*(Aqpassword\*(Aq ); \& $mech\->get( \*(Aqhttp://10.11.12.13/password.html\*(Aq ); \& print $mech\->content(); .Ve .SH "LINKS" .IX Header "LINKS" .SS "Find all image links" .IX Subsection "Find all image links" Find all links that point to a \s-1JPEG, GIF\s0 or \s-1PNG.\s0 .PP .Vb 2 \& my @links = $mech\->find_all_links( \& tag => "a", url_regex => qr/\e.(jpe?g|gif|png)$/i ); .Ve .SS "Find all download links" .IX Subsection "Find all download links" Find all links that have the word \*(L"download\*(R" in them. .PP .Vb 2 \& my @links = $mech\->find_all_links( \& tag => "a", text_regex => qr/\ebdownload\eb/i ); .Ve .SH "ADVANCED" .IX Header "ADVANCED" .SS "See what will be sent without actually sending anything" .IX Subsection "See what will be sent without actually sending anything" .Vb 2 \& $mech\->add_handler("request_send", sub { shift\->dump; exit; }); \& $mech\->get("http://www.example.com"); .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" WWW::Mechanize .SH "AUTHOR" .IX Header "AUTHOR" Andy Lester .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2004 by Andy Lester. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.