[SP-pm] Extrair conteúdo HTML. WWW::Mechanize ?

André Garcia Carneiro andre.garcia.carneir at terra.com.br
Wed Oct 15 10:56:37 PDT 2008



---------- Cabeçalho original -----------

De: saopaulo-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
Para: saopaulo-pm em mail.pm.org
Cópia: 
Data: Wed, 15 Oct 2008 12:07:31 -0300
Assunto: Re: [SP-pm] Extrair conteúdo HTML. WWW::Mechanize ?

> #! /usr/bin/perl -w
> use HTML::TreeBuilder;
> use WWW::Mechanize;
> use strict;
> my $m   = WWW::Mechanize->new();
> $m->get('http://www.hgcinema.com.br/programacao/index.php'<http://www.hgcinema.com.br/programacao/index.php%27>
> );
> my $string = $m->content;
> my $tree        = HTML::TreeBuilder->new_from_content($string);
> #print $tree->as_HTML;
> my @filmes      = $tree->look_down(_tag => 'tr',
> bgcolor=>"#ffffff",sub{$_[0]->attr('onclick') ne ''});
> print "\n\nFILME                Censura         Horario";
> foreach(@filmes){
>        my @col = $_->look_down(_tag=>'td');
>        my ($filme,$censura,$horario) =
> ($col[0]->as_text,$col[1]->as_text,$col[2]->as_text);
>        print "\n$filme         $censura                $horario";
> }
> 
> Vou ter que estudar aqui. = D
> Muito obrigado André
> 
> não é um "erro", é um caso de erro. E se o seu get() do site não
> funcionar? 

Sim, tens razão, mas esses tratamentos é você quem deve fazer. Eu só apontei uma direção... Mas pode ser q
tenha razão, vou enviar exemplos mais completos quando tentar ajudar novamente.

>O site pode estar fora do ar, vc pode estar sem Internet...
> considerar possíveis casos de erro é algo importante em programas,
> pelo menos em programas sérios =)
>

Não, este não é um software sério. Meramente 'didático'...Melhore-o, faça os tratamentos de erros que eu
'esqueci', e depois poste a solução pra gente ver(se for o caso...).
 
> Não sabia disso muito obrigado.

Não sabia do q? 

De qualquer forma espero tê-lo ajudado.



Cheers!

> 
> []'s
> 
> 
> 
> 2008/10/15 breno <breno em rio.pm.org>
> 
> > 2008/10/15 Daniel de Oliveira Mantovani <
> > daniel.oliveira.mantovani em gmail.com>:
> > > Obrigado Breno.
> > >
> > > Você pode trocar por algo como:
> > >
> > >
> > > if ( $data->success() ) {
> > >        @filmes = $data->content() =~ m{<br><i>\((.+?)\)</i></td>}
> > >>
> > >> gs;
> > >> }
> > >
> > >
> > > Não funcionou não.
> > >
> >
> > Estranho. Aqui eu fiz o seguinte programa-teste:
> >
> > [filmes.pl]
> > --------------8<-----------------
> >     my @filmes = ();
> >    my $data = WWW::Mechanize->new();
> >   
$data->get('http://www.hgcinema.com.br/programacao/index.php'<http://www.hgcinema.com.br/programacao/index.php%27>
> > );
> >
> >     if ( $data->success() ) {
> >        @filmes = $data->content() =~ m{<br><i>\((.+?)\)</i></td>}gs;
> >    }
> >
> >     local $, = ", ";
> >    print @filmes;
> > --------------8<-----------------
> >
> > > perl filmes.pl
> > A Casa da M?e Joana, The House Bunny, A Guerra dos Rocha, The Mummy:
> > Tomb of the Dragon Emperor, Righteous Kill, The Dark Knight, Bezerra
> > de Menezes - O Di?rio de um Esp?rito, Taken, Chasseurs de Dragons,
> > Eagle Eye, Blindness, Era uma vez..., Hellboy II: The Golden Army,
> > Kung Fu Panda, Babylon A.D., The Women, Nights in Rodanthe, Fly Me To
> > the Moon, Disaster Movie, You Don?t Mess With The Zohan
> >
> > ...que era o mesmo que a sua função retornava qdo rodei aqui. Talvez
> > se vc mandar uma resposta um pouco menos críptica do que "Não
> > funcionou não." eu possa te ajudar a depurar. Mas o André já enviou um
> > exemplo com o TreeBuilder, dá uma olhada.
> >
> > > para vc lidar com o caso de erro no get() que vc faz na linha acima.
> > >
> > > Não achei o "erro" que você disse no get().
> > >
> >
> > não é um "erro", é um caso de erro. E se o seu get() do site não
> > funcionar? O site pode estar fora do ar, vc pode estar sem Internet...
> > considerar possíveis casos de erro é algo importante em programas,
> > pelo menos em programas sérios =)
> >
> > []s
> >
> > -b
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> 
> 
> 
> -- 
> print
> "\x54\x68\x65\x20\x53\x69\x6c\x65\x6e\x74\x20\x47\x75\x61\x72\x64\x69\x61\x6e",$/
> 

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org



More information about the SaoPaulo-pm mailing list