[Rio-pm] Mojolicious - Duvidas

Stanislaw Pusep creaktive em gmail.com
Quinta Abril 12 12:35:20 PDT 2012


Manoel, você também pode usar o Web::Scraper (
https://metacpan.org/module/Web::Scraper), que faz o scraping e já carrega
os dados em uma estrutura hierárquica:

use Data::Printer;
use URI;
use Web::Scraper;

my $r = scraper {
    process q(//head/title),
        title => 'text';
    process q(//h1|//h2|//h3),
        q(heading[]) => 'text';
}->scrape(
    URI->new(qw(http://mojolicio.us/perldoc))
);

p $r;

Resultado:

\ {
    heading   [
        [0] "TABLE OF CONTENTS",
        [1] "NAME",
        [2] "DON'T PANIC!",
        [3] "LEARNING PERL",
        [4] "TUTORIAL",
        [5] "GUIDES",
        [6] "HIGHLIGHTS",
        [7] "MORE"
    ],
    title   "Mojolicious::Guides - Mojolicious guide to the galaxy"
}

ABS()



On Thu, Apr 12, 2012 at 15:11, Manoel Domingues Junior <
manoel.domingues.junior em gmail.com> wrote:

> Olá pessoal,
>
> Estou tentando montar um crawller, mas estou empacado.
>
> No meu maior problema está sendo em como fazer para pegar o conteúdo que
> aparece ao lado de Heading e colocá-lo em uma varíavel.
>
>   use Mojo::UserAgent;
>
>   # Fetch web site
>   my $ua = Mojo::UserAgent->new;
>   my $tx = $ua->get('mojolicio.us/perldoc');
>
>   # Extract title
>   say 'Title: ', $tx->res->dom->at('head > title')->text;
>
>   # Extract headings
>   $tx->res->dom('h1, h2, h3')->each(sub {
>     say 'Heading: ', shift->all_text;
>   });
>
>
> Executando esse código (ele está na página do Mojolicious) teremos:
>
> Title: Mojolicious::Guides - Mojolicious guide to the galaxy
> Heading: TABLE OF CONTENTS
> Heading: NAME
> Heading: DON'T PANIC!
> Heading: LEARNING PERL
> Heading: TUTORIAL
> Heading: GUIDES
> Heading: HIGHLIGHTS
> Heading: MORE
>
> O que não estou conseguindo fazer é colocar, por exemplo, o "TABLE OF
> CONTENTS" dentro de uma variável. Ou seja, não estou entendo o
> funcionamento do shift...
>
>
>
> Abraços,
> --
> --
> Manoel Domingues Junior
> "Coletar dados é o primeiro passo para a sabedoria, mas compartilhar dados
> é o primeiro passo para a comunidade."
> IBM - Prodigy Linux
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120412/72032c9d/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm