[Rio-pm] HTML::Parse

Stanislaw Pusep creaktive em gmail.com
Sexta Outubro 19 20:13:10 PDT 2012


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/))) 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_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
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121020/40494a85/attachment-0001.html>


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