[SP-pm] Extrair conteúdo HTML. WWW::Mechanize ?
André Garcia Carneiro
andre.garcia.carneir at terra.com.br
Wed Oct 15 05:01:44 PDT 2008
Espero que não esteja tentando apenas chupinhar a informação para propósitos obscuros...
Vou te dar uma sugestão, mas acreditando que você esteja querendo aprender e usar isso para fins
não-ilícitos(chupinhar conteúdo sem autorização, por exemplo).
<code>
#! /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');
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";
}
</code>
---------- 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: Tue, 14 Oct 2008 16:44:34 -0300
Assunto: [SP-pm] Extrair conteúdo HTML. WWW::Mechanize ?
> print "Bom dia\n" if day == manha;
> print "Boa tarde\n" if day == tarde;
> print "Boa noite\n" if day == noite;
>
> Bom pessoal como vocês disseram que não é bom usar Expressões Regulares para
> extrair conteúdo HTML, e pelo que vi no manual do WWW::Mechanize, porém eu
> não consigo extrair com a mesma eficácia.
>
> Essa parte do código:
>
> * foreach ( split("\n",$data->content()) ) {
> if ( m{</strong><br><i> \( (.+?) \) </i></td>}igx ) {
> push(@filmes,$1);
>
> *Quero usar o WWW::Mechanize para extrair essa parte.
> Olhei os exemplos do WWW::Mechanize:
> *
> http://search.cpan.org/~petdance/WWW-Mechanize-1.34/lib/WWW/Mechanize/Examples.pod
> *
> e vi que o autor usou Expressões Regulares para extrair:
> * @bits = $r =~ m{<TD.*?>(.*?)</TD>}gs;*
>
> O meu projeto abaixo:
>
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use WWW::Mechanize;
> use WWW::Search::Mininova;
>
> {package Hgtorrent;
>
> sub Nomes
> {
> my $self = shift;
> my @filmes = ();
> my $data = WWW::Mechanize->new();
> $data->get('http://www.hgcinema.com.br/programacao/index.php');
> foreach ( split("\n",$data->content()) ) {
> if ( m{</strong><br><i> \( (.+?) \) </i></td>}igx ) {
> push(@filmes,$1);
> }
> }
> return @filmes;
> }
>
> sub Procurar
> {
> my $self = shift;
> my $busca = shift;
> my $mini = WWW::Search::Mininova->new( category => 'Movies',sort => 'Seeds'
> ,);
> $mini->search("$busca");
> my $result = $mini->result;
> if (defined $result->{name}) {
> print "Name: ", $result->{name},$/,
> "Seeds: ", $result->{seeds},$/,
> "Leechers: ", $result->{leechers},$/,
> "Uri: ", $result->{uri},$/,
> "Download uri: ", $result->{download_uri},$/,
> "Size: ", $result->{size},$/,
> "Category: ", $result->{category},$/,
> "Sub Category: ", $result->{subcategory},$/,
> "Added data: " ,$result->{added_date},$/;
> }
> else {
> print "Not Found\n";
> }
> }
>
>
> }
>
> *-D-----> Abraço *
> --
> 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