• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
WWW:::Mechanize YAPC::BR 2008
 

WWW:::Mechanize YAPC::BR 2008

on

  • 2,772 views

 

Statistics

Views

Total Views
2,772
Views on SlideShare
2,770
Embed Views
2

Actions

Likes
1
Downloads
11
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    WWW:::Mechanize YAPC::BR 2008 WWW:::Mechanize YAPC::BR 2008 Presentation Transcript

    •     WWW::Mechanize Márcio Vitor De Matos Silva ­ cromo.jml@gmail.com    
    • WWW::Mechanize  Criador e Project Owner  Andy Lester 'PetDance' Licença  Artistic License/GPL Versão estável  1.34 – 09/12/2007 Versão desenvolvimento    1.49_01 – 27/09/2008   
    • Usos úteis e comuns   Preenchimento de formulários  Percorrer e clicar links  Testes automatizados  Enviar referers, user­agents, uso de  proxys  Acessar histórico de urls visitados    
    • De onde vem a força ?  LWP::UserAgent  HTTP::Request  HTTP::Cookies  HTML::TokeParser  URI  ...    
    • LWP::UserAgent WWW::Mechanize  Conceitos e propósitos diferentes.  Mechanize abstrai dificuldades do  LWP::UserAgent    
    • Ambiente Instalação cpan> install WWW::Mechanize Documentação perldoc WWW::Mechanize Uso use WWW::Mechanize; Construtor my $mech = WWW::Mechanize­>new();    
    • Capturando uma página use WWW::Mechanize; my $mech = WWW::Mechanize­>new(); $mech­>get(“http://www.retbeer.com/”); print $mech­>title.$/;    
    • $mech­>agent Get/set que define o user­agent usado durante  a navegação Também pode ser definida no método  construtor: my $mech = WWW::Mechanize­>new( agent =>  ’wonderbot 1.01’ );    
    • Enviando um agent my $mech = new WWW::Mechanize; $mech­>get('http://www.perl.org.br'); $mech­>agent(“TestBot/1.0”); if($mech­>success) { print $mech­>content; } else { print $mech­>response­>error_as_HTML; }    
    • $mech­>add_header  Permite adicionar parâmetros ao header da  requisição $mech­>add_header( Referer =>  'http://www.retbeer.com' ); $mech­>add_header( Referer => undef ); $mech­>add_header( Encoding => ’text/klingon’ );    
    • $mech­>find_all_links   Retorna todos os links seguindo algum  critério:    $mech­>get( $url );    my @links = $mech­>find_all_links( text_regex  => qr/Cinema/i );    foreach my $link (@links)  {                $mech­>get( $link­>url_abs );                return $mech­>content;   }  
    • $mech­>follow_link  'Clica' o link seguinte o critério escolhido $mech­>get('http://www.retbeer.com'); foreach my $categoria qw(vinho cerveja vodka) { $mech­>follow_link( text_regex => qr/$categoria/i ); if ($mech­>success) { print $categoria.$/; print $mech­>content;     $mech­>back;   }   }
    • $mech­>submit_form  Formulários por form_number/form_name  Preenchimento de campos  Submit de forms            
    • Submetendo um formulário      use WWW::Mechanize;       my $mech = WWW::Mechanize­>new();       $mech­>get( 'http://www.retbeer.com' );       $mech­>submit_form(                 form_name => 'form_login',                 fields      => {                     username    => 'mungo',                     password    => 'lost­and­alone',                 }              );   
    • Test::WWW::Mechanize   Sub classe WWW::Mechanize  Incorpora features para testes de aplicações  web:  Base  Conteúdo html  Links  Formulários    
    • Realizando testes use Test::WWW::Mechanize; use Test::More tests => 4; my $mech = Test::WWW::Mechanize­>new; $mech­>get_ok( 'http://www.perl.org.br/ '); $mech­>base_is( 'http://www.perl.org.br/Main/WebHome' ,quot;Basequot;); $mech­>title_is( quot;Perl Brasil ­ WebHomequot;,quot;Titlequot;); $mech­>content_contains( quot;Artigos quot;,quot;Artigosquot; ); # perl  teste_perlbr.pl 1..4 ok 1 ­ GET http://www.perl.org.br/  ok 2 ­ Base ok 3 ­ Title   ok 4 ­ Artigos  
    • Exemplo de uso real     my $login    = quot;login_namequot;;     my $password = quot;passwordquot;;     my $folder   = quot;folderquot;;     my $url = quot;http://img78.photobucket.com/albums/v281/$login/$folder/quot;;     # login to your photobucket.com account     my $mech = WWW::Mechanize­>new();     $mech­>get($url);     $mech­>submit_form(         form_number => 1,         fields      => { password => $password },     );     die unless ($mech­>success);     # upload image files specified on command line     foreach (@ARGV) {         print quot;$_nquot;;         $mech­>form_number(2);         $mech­>field('the_file[]' => $_);         $mech­>submit();       }  
    • Referências CPAN http://search.cpan.org/dist/WWW­ Mechanize/lib/WWW/Mechanize.pm  Mailing list  http://groups.google.com/group/www­mechanize­ users Google Code  http://code.google.com/p/www­mechanize/    
    • Fontes de pesquisa:  man WWW::Mechanize  Spidering Hacks HEMENWAY, Kevin e CALISHAIN, Tara.  Cambridge, Massachusetts: O'Reilly, 2003. ISBN 0­596­00577­6.  Automated web site testing with WWW::Mechanize   with Andy Lester http://www.webgui.org/wgtv/wwwmechanize    
    • THE END