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

breno breno at rio.pm.org
Wed Oct 15 11:33:39 PDT 2008


André, os comentários no final eram meus pra ele, com a resposta dele.
Por algum motivo o Daniel não separou os emails e respondeu os dois de
uma vez só... Ficou confuso mesmo, por isso vc não entendeu (eu também
demorei)

[]s

-b

2008/10/15 André Garcia Carneiro <andre.garcia.carneir em terra.com.br>:
>
>
> ---------- 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
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


More information about the SaoPaulo-pm mailing list