[SP-pm] Extrair conteúdo HTML. WWW::Mechanize ?
Daniel de Oliveira Mantovani
daniel.oliveira.mantovani at gmail.com
Tue Oct 14 20:22:53 PDT 2008
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.
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().
Como alternativa à regexp, você pode passear pela árvore HTML usando
HTML::TableContentParser ou com outros módulos de scraping como o
pQuery ou o Web::Scraper:
Vou tentar usar isso.
Muito obrigado Breno ^^
Abraços
2008/10/14 breno <breno em rio.pm.org>
> Daniel,
>
> infelizmente pelo que vi o site em questão usa tabelas e não trabalha
> com ids, então o scraping será mais passível de problemas (leia-se "se
> mudarem alguma coisa no layout seu script provavelmente vai parar de
> funcionar").
>
> Sobre o trecho de código:
>
> > foreach ( split("\n",$data->content()) ) {
> > if ( m{</strong><br><i> \( (.+?) \) </i></td>}igx ) {
> > push(@filmes,$1);
>
> Você pode trocar por algo como:
>
>
> if ( $data->success() ) {
> @filmes = $data->content() =~ m{<br><i>\((.+?)\)</i></td>}gs;
> }
>
> me parece mais rápido (menos operações) e legível, além dar a deixa
> para vc lidar com o caso de erro no get() que vc faz na linha acima.
>
> Como alternativa à regexp, você pode passear pela árvore HTML usando
> HTML::TableContentParser ou com outros módulos de scraping como o
> pQuery ou o Web::Scraper:
>
> []s
>
> -b
>
>
> 2008/10/14 Daniel de Oliveira Mantovani <
> daniel.oliveira.mantovani em gmail.com>:
> > 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<http://search.cpan.org/%7Epetdance/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'<http://www.hgcinema.com.br/programacao/index.php%27>
> );
> > 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",$/
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> _______________________________________________
> 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",$/
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20081015/5cbbcc85/attachment-0001.html>
More information about the SaoPaulo-pm
mailing list