[Rio-pm] HTML::Parse

Aureliano Guedes guedes_1000 em hotmail.com
Quinta Outubro 25 16:57:53 PDT 2012


Eu fiz de uma forma que deu certo, mas ficou feio e cheio de más praticas, mandando reguex em xml e tals.

Quero fazer de forma bonita com XPath e tals. Mas ainda estou em processo de entendet tudo isso.

Estou tentando pegar o primeiro link da lista de videos de um resultado de pesquisa do YouTube.
Para isso estou ultilizando uma API do YouTube: https://developers.google.com/youtube/2.0/developers_guide_protocol_api_query_parameters#Searching_for_Videos

Onde estão os erros fora tudo?? -> http://pastebin.com/T06Mi1Nx

#!/usr/bin/env perl

use common::sense;
use WWW::Mechanize;
use URI::Escape;
use HTML::TreeBuilder::XPath;

my $html = WWW::Mechanize->new(timeout=>100);

open IN, $ARGV[0] or die $!;

foreach (<IN>){
    s/\s+/\+/g;
    chomp;
    my $url = 'https://gdata.youtube.com/feeds/api/videos?q=' . uri_escape($_);
    $html->get($url);
    if ($html->is_success){
        my $page = $html->content;
        $page =~ s/(\n\r|\r\n)|\r/\n/g;
        
        my $tree = HTML::TreeBuilder::XPath->new();
        
        my $node = $tree->findenodes('/html/body//a[@href=(.*)]')->[0];
        
        print $node;
    }
    else {
        print "FAIL: " . $! . "\n";
    }
}



> Date: Thu, 25 Oct 2012 13:06:40 -0200
> From: breno em rio.pm.org
> To: rio-pm em pm.org
> Subject: Re: [Rio-pm] HTML::Parse
> 
> 2012/10/21 Aureliano Guedes <guedes_1000 em hotmail.com>
> >
> > Ola.
> >
> > Eu estoiu tentando usar o WWW::Mechanize, mas não estou entendendo uma coisa.
> > Eu tenho um botão:
> >
> > <a href="/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3" rel="nofollow" title="Download Fernando E Sorocaba     Tenso.mp3!">
> >         <img src="/images/download.jpg" width="95" height="25" alt="Baixar Fernando E Sorocaba     Tenso" style="border:0" /></a>
> >
> >
> > Como eu faço para clicar nele usando o metodo click_button? Como faço para setar esse botão?
> > Eu tentei:
> > $m->click_button(value=>/dl/347357664b655256724e/554545485125135/Fernando+E+Sorocaba+++++Tenso.mp3);
> > Mas não da certo.
> >
> 
> O seu botão não é um botão (<button> ou <input type="button">) e sim
> um link (<a>). O Mechanize sabiamente os diferencia, e você
> provavelmente está procurando o método follow_link()
> 
> https://metacpan.org/module/WWW::Mechanize#mech-follow_link-...-
> 
> Finalmente, se quiser aprender sobre XPath e Seletores CSS, recomendo
> os seguintes artigos:
> 
> http://sao-paulo.pm.org/artigo/2010/utilizandoxpathparacriarwebspiders
> http://sao-paulo.pm.org/artigo/2011/ExtracaodedadoscomperlxpatheregexExportadoemODF
> http://sao-paulo.pm.org/artigo/2011/ScrapingfacilcomMojoliciousefeedsAtom
> (veja no final: guia de referência rápida para seletores CSS)
> 
> ou ir direto na fonte:
> 
> http://www.w3.org/TR/xpath/
> http://www.w3.org/TR/CSS2/selector.html
> http://www.w3.org/TR/css3-selectors/
> 
> []s
> 
> -b
> _______________________________________________
> 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/20121025/cc53f63f/attachment.html>


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