[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