[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