[Rio-pm] HTML::Parse

Bruno Buss bruno.buss em gmail.com
Sábado Outubro 20 09:44:45 PDT 2012


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_1000 em 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/<http://www.buscamp3.org/download/thaeme+e+thiago+ai+que+do_3473494b6c3636334d55.html>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.buss em gmail.com
> Date: Sat, 20 Oct 2012 12:39:02 -0300
>
> To: rio-pm em 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_1000 em 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'<http://www.buscamp3.org/dl/34736943505352494374/554545485125135/Thaeme+E+Thiago+-+Ai+Que+Do.mp3%27>
> );
> open OUT,">". 'abcde.mp3';
> print OUT $_ foreach (@url);
>
> Obtive um arquivo vazio.
>
> Oque pode ser??
> ------------------------------
> From: guedes_1000 em hotmail.com
> To: rio-pm em pm.org
> Date: Sat, 20 Oct 2012 15:25:29 +0000
>
> 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: creaktive em gmail.com
> Date: Sat, 20 Oct 2012 00:13:10 -0300
> To: rio-pm em 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 em 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/)<http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/%29>))
> 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/'<http://www.buscamp3.org/busca/Thaeme+e+Thiago+-+Ai+que+do/%27>
> );
>
> 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_1000 em 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: marciodesouzaferreira em gmail.com
> Date: Fri, 19 Oct 2012 21:14:53 -0300
>
> To: rio-pm em 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 <rafaelprenzier em gmail.com>
>
> WWW::Mechanize ++
>
>
> 2012/10/19 Ricardo Filipo <ricardo_filipo em 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_1000 em hotmail.com>
> *Para:* Rio PM <rio-pm em 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 em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em 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 em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
>
>
>
> --
> Bruno C. Buss
> http://www.brunobuss.net
>
> _______________________________________________ Rio-pm mailing list
> Rio-pm em pm.org http://mail.pm.org/mailman/listinfo/rio-pm
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Bruno C. Buss
http://www.brunobuss.net
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121020/d18aed28/attachment-0001.html>


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