Re: [Rio-pm] HTML::Parse
Hi. O meu é pra extrair o áudio de arquivos FLV. Não é diretamente relacionado ao YouTube. :P Enviado via mobile Em 27/10/2012 00:19, Renato Santos renato.c...@gmail.com escreveu: Se não me engano esse módulo é do Junior Moraes Em 26/10/2012 22:14, Aureliano Guedes guedes_1...@hotmail.com escreveu: Vou estudar mais e ver se não começo por onde vocês estão me indicando. Por exemplo, sou acostumado usar ubuntu e slackware, mas meu note pifo e to usando o pc de mesa com windows 7, e comecei a ter problemas com download devido um problema tecnico ja explicado em outra tread pelo Stanislaw Pusep. Assumindo que o MP3 tenha uma entropia próxima de 8 bits por byte (algo que definitivamente não vale para um arquivo .pl, por mais que nos caçoem), um arquivo de 6,16MB poderá ter cerca de 25 mil ocorrências de \x0A. Mapeando CR = CRLF, pode crescer em cerca de 50KB. Acho que 6,19MB está dentro da faixa :) Logo todo arquivo de audio e video chega com problema, usando esse modulo - https://metacpan.org/module/WWW::YouTube::Download Estou analizando a source dele com calma para ver se acho o erro, o problema que essa source esta complexa praq minha mente, mas começo achar que o problema esta em: my $res = $self-ua-get($video_url, ':content_cb' = $args-{cb}); Carp::croak !! $video_id download failed: , $res-status_line if $res-is_error; Depois darei um feedback sobre se corrigi o erro. -- From: tiago.pecze...@gmail.com Date: Fri, 26 Oct 2012 07:36:47 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse e o que te impede de fazer a sua versão? se vc pensar um pouco vc pode contribuir com algo bom e não uma copia de algo que ja exista. Outra coisa, o que existe la pode ser antigo, nesse caso vc pode ou tentar assumir aquele projeto ou lançar o seu baseado nos principios (oo, funcional, assincrono, etc) que vc acredita. se o modulo for ruim ninguem vai usar, simples assim. 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber que está criando algo que ja existe. Valeu. -- From: creakt...@gmail.com Date: Thu, 25 Oct 2012 22:33:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://pacman.blog.br ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Aureliano, Eu vi algo no seu código que não é um erro, e há controvérsias sobre ser boa ou má prática, varia um pouco com gosto do freguês, mas que eu pessoalmente gosto de fazer diferente. Acho que é um estilo melhor. Ao invés de fazer (principalmente em loops), algo como: for(...) if( deu certo ) faz um lance else #deu errado mostra ou trata erro endif endfor Eu geralmente prefiro fazer assim for(...) if( deu errado ) mostra ou trata erro next# ou die, depdende de como voce quer lidar com o erro elseif( deu outro lance errado ) mostra ou trata next ... # tantas quantas validações forem necessárias endif # parâmetros desta iteração estão validados faz um lance endfor Acho que dessa forma, você simplifica a leitura do código: 1) o que for erro você trata logo, e depois que passa daquele bloco de validações está ok e 2) visualmente faz até mais sentido: o código mais indentado no começo é a exceção, enquanto que a regra está apenas um nível de indentação depois do comando de loop. my $two_cents; Russo 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com 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: br...@rio.pm.org To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse 2012/10/21 Aureliano Guedes guedes_1...@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@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Alexei RUSSOZ Znamensky | russoz EM gmail com | http://russoz.org GPG fingerprint = 42AB E78C B83A AE31 7D27 1CF3 C66F B5C7 71CA 9F3C http://www.flickr.com/photos/alexeiz | http://github.com/russoz I don't know... fly casual! -- Han Solo ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Vou estudar mais e ver se não começo por onde vocês estão me indicando. Por exemplo, sou acostumado usar ubuntu e slackware, mas meu note pifo e to usando o pc de mesa com windows 7, e comecei a ter problemas com download devido um problema tecnico ja explicado em outra tread pelo Stanislaw Pusep. Assumindo que o MP3 tenha uma entropia próxima de 8 bits por byte (algo que definitivamente não vale para um arquivo .pl, por mais que nos caçoem), um arquivo de 6,16MB poderá ter cerca de 25 mil ocorrências de \x0A. Mapeando CR = CRLF, pode crescer em cerca de 50KB. Acho que 6,19MB está dentro da faixa :) Logo todo arquivo de audio e video chega com problema, usando esse modulo - https://metacpan.org/module/WWW::YouTube::Download Estou analizando a source dele com calma para ver se acho o erro, o problema que essa source esta complexa praq minha mente, mas começo achar que o problema esta em: my $res = $self-ua-get($video_url, ':content_cb' = $args-{cb}); Carp::croak !! $video_id download failed: , $res-status_line if $res-is_error; Depois darei um feedback sobre se corrigi o erro. From: tiago.pecze...@gmail.com Date: Fri, 26 Oct 2012 07:36:47 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse e o que te impede de fazer a sua versão? se vc pensar um pouco vc pode contribuir com algo bom e não uma copia de algo que ja exista. Outra coisa, o que existe la pode ser antigo, nesse caso vc pode ou tentar assumir aquele projeto ou lançar o seu baseado nos principios (oo, funcional, assincrono, etc) que vc acredita. se o modulo for ruim ninguem vai usar, simples assim. 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber que está criando algo que ja existe. Valeu. From: creakt...@gmail.com Date: Thu, 25 Oct 2012 22:33:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Tiago B. Peczenyj Linux User #405772 http://pacman.blog.br ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber que está criando algo que ja existe. Valeu. From: creakt...@gmail.com Date: Thu, 25 Oct 2012 22:33:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Mas também sempre tem algo a ser feito, alguma feature nova ou algum bug a ser corrigido. Solli Em 26 de outubro de 2012 01:14, Ole Peter Smith ole@gmail.comescreveu: aureliano todo programador tem que passar por isso, criar algo que ja existe. chama-se aprendizagem 0le Send via Android On Oct 25, 2012 10:16 PM, Aureliano Guedes guedes_1...@hotmail.com wrote: Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber que está criando algo que ja existe. Valeu. -- From: creakt...@gmail.com Date: Thu, 25 Oct 2012 22:33:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- o animal satisfeito dorme. - Guimarães Rosa ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
O segredo é pesquisar antes, cara, ou mesmo perguntar. Com CPAN, 90% de qualquer programa já está pronto :) Agora, você não precisa criar módulos... Por que não criar programas que usam esses módulos para fazer algo bacana? Por exemplo, a Renata me mostrou outro dia um site muito interessante chamado musicplayr.com, que integra diferentes listas de vídeos de música de sites como Vimeo, YouTube e SoundCloud. Mas não precisa nem ser pra web: que tal um programa que baixa todos os seus vídeos favoritados no YouTube? Com Perl e CPAN, isso é muito fácil, e é o tipo do programa super útil pra quem gosta de manter cópias de seus vídeos favoritos para ver offline. Além disso, é como Gabriel e Solli falaram: escrever algo que já existe faz parte do aprendizado (e como tem sempre mais de uma maneira de se fazer as coisas, não há nada de errado em lançar módulos alternativos), e mesmo módulos já existentes podem se beneficiar com a implementação de novas features e correções de bugs. É isso. Agora vá e crie coisas incríveis. :) []s -b 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: Cara, eu acho o CPAN maravilhoso, mas as vezes é frustante você saber que está criando algo que ja existe. Valeu. From: creakt...@gmail.com Date: Thu, 25 Oct 2012 22:33:46 -0200 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ++breno! ABS() 2012/10/25 breno br...@rio.pm.org 2012/10/25 Aureliano Guedes guedes_1...@hotmail.com: 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 Olha, fora tudo, posso te garantir que não há erros :) Pergunta: vc tá fazendo isso só por diversão, né? Isso porque uma busca rápida no CPAN me levou ao WebService::GData::YouTube, que faz buscas e muito mais. https://metacpan.org/module/WebService::GData::YouTube#search_video O one-liner abaixo, por exemplo, exibe o título do primeiro resultado para uma busca no YouTube por perl: perl -MWebService::Gdata::YouTube -E 'my $yt = WebService::GData::YouTube-new; $yt-query-q( q[perl] )-limit(1,0); say $_-title foreach @{ $yt-search_video() }' []s -b ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
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. From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sat, 20 Oct 2012 17:28:46 + Subject: Re: [Rio-pm] HTML::Parse Opa, Bruno, obrigado pela resposta sua e de todos os outros que estão me ajudando. Irei tentar seguir o que me falaram e depois darei um feedback dos resultados. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 13:44:45 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Então provavelmente eles estão verificando pelo referer no header do request HTTP [1]. Não sei como funciona o LWP::Simple, mas com o LWP::UserAgent você consegue setar parametros pro header a ser enviado. No caso você deveria setar o referer para 'http://www.buscamp3.org/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html'. Outra opção talvez seja usar o WWW::Mechanize, acho que ele faz isso automaticamente para você, se você utilizar as funções de navegação dele. No mais, deixe-me discordar da seguinte frase que você escreveu anteriormente (sobre XPath e seletores CSS): Nesse caso não é pra mim, não retenho esses conhecimentos. Se você não conhece XPath e/ou seletores CSS, você deveria procurar dar uma olhada/estudada breve neles se isso for necessário para resolver um problema seu. É uma mentalidade melhor do que assumir que você não sabe, nem vai apreender e por isso limitar o seu leque de opções para fazer o que você quer ;) [ ]'s [1] https://en.wikipedia.org/wiki/HTTP_referer 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Pois é Bruno, aqui tambem da erro, mas se eu entrar nessa pagina http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ e clicar no link o download inicia, e aparentemente é esse o link, a não ser que esse link que eu esteja pegando da pagina esteja errado é o link de download seja outro. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 12:39:02 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Você consegue fazer o download desse arquivo manualmente, colando o endereço no seu próprio browser?Aqui esse link da erro... [ ]'s 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Eu tinha chegado nesses links do mp3, o problema é que fazer o download deles não funciona. No caso: use LWP::Simple; my @url = get ('www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3'); open OUT,. 'abcde.mp3'; print OUT $_ foreach (@url); Obtive um arquivo vazio. Oque pode ser?? From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sat, 20 Oct 2012 15:25:29 + Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. Nesse caso não é pra mim, não retenho esses conmhecimentos. From: creakt...@gmail.com Date: Sat, 20 Oct 2012 00:13:10 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q(http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e:\ {title Baixar Thaeme e Thiago - Ai que do/ grátis,url [[0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ]} Sem ser one-liner maldito: #!/usr/bin/env perluse common::sense;use Data::Printer;use URI;use Web::Scraper; my $url = URI-new('http://www.buscamp3.org
Re: [Rio-pm] HTML::Parse
Bom, eu consegui completar o script. Ainda devo fazer algumas alterações. So um problema, se alguem puder testar vejam que apesar de baixar o arquivo ele vem meio que acelerado, estranho. Ainda para listas com mais de uma musica volta essa msg: plrint() on closed filehandle OUT at C:\User\AG\Desktop\mes.pl line 47. From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sun, 21 Oct 2012 14:48:19 + Subject: Re: [Rio-pm] HTML::Parse 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. From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sat, 20 Oct 2012 17:28:46 + Subject: Re: [Rio-pm] HTML::Parse Opa, Bruno, obrigado pela resposta sua e de todos os outros que estão me ajudando. Irei tentar seguir o que me falaram e depois darei um feedback dos resultados. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 13:44:45 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Então provavelmente eles estão verificando pelo referer no header do request HTTP [1]. Não sei como funciona o LWP::Simple, mas com o LWP::UserAgent você consegue setar parametros pro header a ser enviado. No caso você deveria setar o referer para 'http://www.buscamp3.org/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html'. Outra opção talvez seja usar o WWW::Mechanize, acho que ele faz isso automaticamente para você, se você utilizar as funções de navegação dele. No mais, deixe-me discordar da seguinte frase que você escreveu anteriormente (sobre XPath e seletores CSS): Nesse caso não é pra mim, não retenho esses conhecimentos. Se você não conhece XPath e/ou seletores CSS, você deveria procurar dar uma olhada/estudada breve neles se isso for necessário para resolver um problema seu. É uma mentalidade melhor do que assumir que você não sabe, nem vai apreender e por isso limitar o seu leque de opções para fazer o que você quer ;) [ ]'s [1] https://en.wikipedia.org/wiki/HTTP_referer 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Pois é Bruno, aqui tambem da erro, mas se eu entrar nessa pagina http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ e clicar no link o download inicia, e aparentemente é esse o link, a não ser que esse link que eu esteja pegando da pagina esteja errado é o link de download seja outro. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 12:39:02 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Você consegue fazer o download desse arquivo manualmente, colando o endereço no seu próprio browser?Aqui esse link da erro... [ ]'s 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Eu tinha chegado nesses links do mp3, o problema é que fazer o download deles não funciona. No caso: use LWP::Simple; my @url = get ('www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3'); open OUT,. 'abcde.mp3'; print OUT $_ foreach (@url); Obtive um arquivo vazio. Oque pode ser?? From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sat, 20 Oct 2012 15:25:29 + Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. Nesse caso não é pra mim, não retenho esses conmhecimentos. From: creakt...@gmail.com Date: Sat, 20 Oct 2012 00:13:10 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q(http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e:\ {title Baixar Thaeme e Thiago - Ai que do/ grátis,url [[0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [2] http://www.buscamp3.org/dl/34736943505352494374
Re: [Rio-pm] HTML::Parse
Opa, Bruno, obrigado pela resposta sua e de todos os outros que estão me ajudando. Irei tentar seguir o que me falaram e depois darei um feedback dos resultados. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 13:44:45 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Então provavelmente eles estão verificando pelo referer no header do request HTTP [1]. Não sei como funciona o LWP::Simple, mas com o LWP::UserAgent você consegue setar parametros pro header a ser enviado. No caso você deveria setar o referer para 'http://www.buscamp3.org/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html'. Outra opção talvez seja usar o WWW::Mechanize, acho que ele faz isso automaticamente para você, se você utilizar as funções de navegação dele. No mais, deixe-me discordar da seguinte frase que você escreveu anteriormente (sobre XPath e seletores CSS): Nesse caso não é pra mim, não retenho esses conhecimentos. Se você não conhece XPath e/ou seletores CSS, você deveria procurar dar uma olhada/estudada breve neles se isso for necessário para resolver um problema seu. É uma mentalidade melhor do que assumir que você não sabe, nem vai apreender e por isso limitar o seu leque de opções para fazer o que você quer ;) [ ]'s [1] https://en.wikipedia.org/wiki/HTTP_referer 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Pois é Bruno, aqui tambem da erro, mas se eu entrar nessa pagina http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ e clicar no link o download inicia, e aparentemente é esse o link, a não ser que esse link que eu esteja pegando da pagina esteja errado é o link de download seja outro. From: bruno.b...@gmail.com Date: Sat, 20 Oct 2012 12:39:02 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Você consegue fazer o download desse arquivo manualmente, colando o endereço no seu próprio browser?Aqui esse link da erro... [ ]'s 2012/10/20 Aureliano Guedes guedes_1...@hotmail.com Eu tinha chegado nesses links do mp3, o problema é que fazer o download deles não funciona. No caso: use LWP::Simple; my @url = get ('www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3'); open OUT,. 'abcde.mp3'; print OUT $_ foreach (@url); Obtive um arquivo vazio. Oque pode ser?? From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Sat, 20 Oct 2012 15:25:29 + Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. Nesse caso não é pra mim, não retenho esses conmhecimentos. From: creakt...@gmail.com Date: Sat, 20 Oct 2012 00:13:10 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q(http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e:\ {title Baixar Thaeme e Thiago - Ai que do/ grátis,url [[0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3, [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ]} Sem ser one-liner maldito: #!/usr/bin/env perluse common::sense;use Data::Printer;use URI;use Web::Scraper; my $url = URI-new('http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong),title = 'text';process q(//a[@href=~/\\.mp3$/]),'url[]' = '@href';}-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl
Re: [Rio-pm] HTML::Parse
Isso, é mais ou menos isso mesmo. No caso você usou o WWW:Mechanize, que apesar de eu usar como navegador nunca tinha parado para ver essa propriedade dele. Mas será que não fica um pouco pesado não usar o Mechanize? Eu não entendi como usar o Web::Scraper indicado pelo Junior. Mas ja me ajudaram, obrigado. Date: Fri, 19 Oct 2012 14:47:38 -0300 From: andregarciacarne...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Vários módulos e vários jeitos de fazer! Se eu entendi o que você precisa, pode ser assim: use common::sense;use WWW::Mechanize; my $m = WWW::Mechanize-new();$m-get('http://www.google.com');my @Links = $m-links();foreach my $link(@Links){ say $link-text;}undef $m; #Por favor, RTFM aqui: http://search.cpan.org/~jesse/WWW-Mechanize-1.72/lib/WWW/Mechanize/Link.pm Caso não seja isso o que você quer, explique melhor por gentileza! 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- André Garcia Carneiro Software Engineer (11)982907780 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Acho que estou cometendo algum erro. #!/usr/bin/env perl use strict; use warnings; use WWW::Mechanize; sub parse { my ($self) = shift; $self =~ s/\s+/\+/g; chomp $self; chop $self; return $self; } sub link_gen { my $self = shift; my $link = http://www.buscamp3.org/busca/; . $self; return $link; } sub get_donwloader_link { my $self = shift; my $m = WWW::Mechanize-new(); $m-get($self); my @Links = $m-links(); foreach my $link(@Links){ print $link-text(); } undef $m; } open IN, $ARGV[0] or die; foreach (IN){ print Search for: . $_ . \n; print get_donwloader_link (link_gen (parse ($_))); print \n__\n; } From: guedes_1...@hotmail.com To: rio-pm@pm.org Date: Fri, 19 Oct 2012 17:56:34 + Subject: Re: [Rio-pm] HTML::Parse Isso, é mais ou menos isso mesmo. No caso você usou o WWW:Mechanize, que apesar de eu usar como navegador nunca tinha parado para ver essa propriedade dele. Mas será que não fica um pouco pesado não usar o Mechanize? Eu não entendi como usar o Web::Scraper indicado pelo Junior. Mas ja me ajudaram, obrigado. Date: Fri, 19 Oct 2012 14:47:38 -0300 From: andregarciacarne...@gmail.com To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse Vários módulos e vários jeitos de fazer! Se eu entendi o que você precisa, pode ser assim: use common::sense;use WWW::Mechanize; my $m = WWW::Mechanize-new();$m-get('http://www.google.com');my @Links = $m-links();foreach my $link(@Links){ say $link-text;}undef $m; #Por favor, RTFM aqui: http://search.cpan.org/~jesse/WWW-Mechanize-1.72/lib/WWW/Mechanize/Link.pm Caso não seja isso o que você quer, explique melhor por gentileza! 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- André Garcia Carneiro Software Engineer (11)982907780 ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Opa, valeu mesmo a ajuda. Eu consegui o que queria nessa primeira etapa, ficou assim: http://pastebin.com/GzAnaCK1 Agora tenho outro problema. O link direciona para uma pagina de download, seguindo nosso exemplo temo a seguinte pagina: http://www.buscamp3.org/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html Dentro dessa pagina é que esta o link do download, como no caso: www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/thaeme+e+thiago+ai+que+do.mp3 A duvida agora continua sendo banal: Como faço para salvar esse arquivo em um diretorio?. No momento que requisitar a pagina virá o arquivo normalmente?? Pois eu tentei dar um get no arquivo dessa forma e não deu certo: use LWP::Simple; my $url = get ('www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/thaeme+e+thiago+ai+que+do.mp3'); open OUT,. 'abcde.mp3'; print OUT $url; Tentei usar: binmode $url; Nenhuma dessas tentativas deu certo. Tem alguma forma especial de fazer download de arquivo *.mp3? From: gabriel.vie...@gmail.com Date: Fri, 19 Oct 2012 15:48:03 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse ---8---perl -MMojo::UserAgent -E 'say Mojo::UserAgent-new-get(http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/;)-res-dom(table.linhas_lista)-[0]-find(a)-[0]-{href}' ---8--- ou ---8---mojo get http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ a 12 attr href ---8--- 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Gabriel Vieira ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http://flavors.me/prenzier http://www.diigo.com/user/prenzier ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm
Re: [Rio-pm] HTML::Parse
Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q( http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e: \ { title Baixar Thaeme e Thiago - Ai que do/ grátis, url [ [0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ] } Sem ser one-liner maldito: #!/usr/bin/env perl use common::sense; use Data::Printer; use URI; use Web::Scraper; my $url = URI-new(' http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong), title = 'text'; process q(//a[@href=~/\\.mp3$/]), 'url[]' = '@href'; }-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. -- From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http://flavors.me/prenzier http://www.diigo.com/user/prenzier ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org
Re: [Rio-pm] HTML::Parse
admiro alguns da lista, meia-noite de uma sexta-feira e a nerdaiada postando código e outros lendo K forever alone level master! Em 20 de outubro de 2012 00:13, Stanislaw Pusep creakt...@gmail.comescreveu: Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q( http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e: \ { title Baixar Thaeme e Thiago - Ai que do/ grátis, url [ [0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ] } Sem ser one-liner maldito: #!/usr/bin/env perl use common::sense; use Data::Printer; use URI; use Web::Scraper; my $url = URI-new(' http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong), title = 'text'; process q(//a[@href=~/\\.mp3$/]), 'url[]' = '@href'; }-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. -- From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http://flavors.me/prenzier http://www.diigo.com/user/prenzier ___ Rio-pm mailing list Rio-pm@pm.org
Re: [Rio-pm] HTML::Parse
É a inspiração trazida pelo YAPC::Brasil, transbordando ;) ABS() 2012/10/20 marcio souza ferreira marciodesouzaferre...@gmail.com admiro alguns da lista, meia-noite de uma sexta-feira e a nerdaiada postando código e outros lendo K forever alone level master! Em 20 de outubro de 2012 00:13, Stanislaw Pusep creakt...@gmail.comescreveu: Web::Scraper requer conhecimento de XPath e/ou seletores CSS. No caso do link que você passou, URL do primeiro MP3 pode ser obtida via XPath: //table[@class='linhas_lista'][1]//tr/td[2]/a/@href De onde tirei isso? De uma extensão pro Chrome, chamada XPath Helper: https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl Firefox tem (tinha?) um tal do XPather: https://addons.mozilla.org/en-US/firefox/addon/xpather/ Provando o que o Marcio disse: stas@Stanislaws-MacBook-Pro:~$ perl -CADS -MDDP -MURI -MWeb::Scraper -e 'p scraper{process q(//h1/strong),title=q(text);process q(//a[@href=~/\.mp3$/]),q(url[])=q(@href)}-scrape((URI-new(q( http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/))) x 2)' Printing in line 1 of -e: \ { title Baixar Thaeme e Thiago - Ai que do/ grátis, url [ [0] http://www.buscamp3.org/dl/3473494b6c3636334d55/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [1] http://www.buscamp3.org/dl/3473674c78687936326f/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [2] http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [3] http://www.buscamp3.org/dl/34734c6f727448494d71/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 , [4] http://www.buscamp3.org/dl/3473644e636d6f345245/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3 ] } Sem ser one-liner maldito: #!/usr/bin/env perl use common::sense; use Data::Printer; use URI; use Web::Scraper; my $url = URI-new(' http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/'); p scraper { process q(//h1/strong), title = 'text'; process q(//a[@href=~/\\.mp3$/]), 'url[]' = '@href'; }-scrape($url, $url); ABS() 2012/10/19 Aureliano Guedes guedes_1...@hotmail.com Parece interessante mesmo, mas dificil de entender, principalmente quando é alguem que como eu não sabe nada de HTML. Realmente não entendi como faria tudo isso com o Web::Scraper. -- From: marciodesouzaferre...@gmail.com Date: Fri, 19 Oct 2012 21:14:53 -0300 To: rio-pm@pm.org Subject: Re: [Rio-pm] HTML::Parse estou cansado pra implementar, mas o Web::Scraper é tipo um néctar dos deuses, vc faz um crawler em 5' com ele, bem estilo Perl(que sai da frente e deixa você focar na solução) isso se o HTML não for um monstrengo =) []s, Marcio Ferreira @_marcioferreira (11) 8567-1482 skype: marcio.ferreir4 marciodesouzaferreira.blogspot.com 2012/10/19 Rafael Prenzier rafaelprenz...@gmail.com WWW::Mechanize ++ 2012/10/19 Ricardo Filipo ricardo_fil...@yahoo.com.br Eu gosto do HTML::TreeBuilder pois dá uma visão mais organizada do DOM. Veja um exemplo de uso: https://github.com/rfilipo/WebService-EBC/blob/master/lib/WebService/EBC/News.pm -- *De:* Aureliano Guedes guedes_1...@hotmail.com *Para:* Rio PM rio-pm@pm.org *Enviadas:* Sexta-feira, 19 de Outubro de 2012 13:22 *Assunto:* [Rio-pm] HTML::Parse Ola monges, tudo bem? Qual um bom modulo para buscar string em um HTML? Vocês aconselham o HTML::Parse? Eu não entendo muito de html, mas estou tentando pegar um link dentro de uma pagina. Um exemplo é esse: http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/ Os Links estão nesse formato: a href=/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html title=Thaeme E Thiago - Ai Que Do O Problema é que no caso dessa pagina tem 4 links desse modelo e eu queria pegar apenas o primeiro. Poderia usar regexp mas anteriormente me disseram que não é muito elegante parsear HTML na unha. Sei que a duvida é banal, mas se puderem me dar uma dica agradeço. Att, Aureliano Guedes. ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm ___ Rio-pm mailing list Rio-pm@pm.org http://mail.pm.org/mailman/listinfo/rio-pm -- Rafael Prenzier dos Santos | Engenheiro e Perl Monger (11) 5209-0847 www.prenzier.com http://gplus.to/prenzier http://www.facebook.com/rafaelprenzier http://twitter.com/prenzier/ http://www.orkut.com.br/Main#Profile?uid=13496291347057199080 http://cid-eacb613d80ce8dba.profile.live.com/ http://www.delicious.com/rafaelprenzier/ http://www.google.com/profiles/rafaelprenzier http://br.linkedin.com/pub/rafael-prenzier-dos-santos/29/6a2/478 http://www.youtube.com/prenzier http://www.diigo.com/user/prenzier http://www.shelfari.com/rprenzier/shelf http