[SP-pm] dúvida HTML::TreeBuilder

Daniel de Oliveira Mantovani daniel.oliveira.mantovani at gmail.com
Wed Aug 19 15:27:29 PDT 2009


2009/8/19 Daniel de Oliveira Mantovani <daniel.oliveira.mantovani em gmail.com>:
> <code>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
> use WWW::Mechanize;
> use HTML::TreeBuilder;
>
> my $mech = WWW::Mechanize->new();
> $mech->get('trecho_do_seu_codigo');
>
> my $tree_page = HTML::TreeBuilder->new_from_content($mech->content);
>
> my $look_td = $tree_page->look_down(_tag => 'td',class => 'info');
>
> if (defined $look_td) {
>
>        print $look_td->as_HTML;
>
> } else {
>
>        die "Não existe a tag \"td\" com a \"class info\"\n";
>
>
> }
>
> =head info1
>
> Se existir, vai imprimir tudo, tudo dentro da tag td, ou seja:
> <td align="center" class="info" colspan="2"><br />Codigo
> N<sup>o</sup>100200333 <br /> </td>
>
> =cut
>
> # - Agora que temos a tag do objetivo, vamos chegar até onde queremos.
> # - Se se eu for fazer exatamente como você quer, é só fazer algo como:
s/se//;
>
> my $codigo_n;
>
> if ($look_td =~ m{<br />(Codigo N)<sup>o</sup>}) {
>
> # - Yeap pegou :P
>        $codigo_n = $1;
>
> }
>
> __END__
>
> Imagine que o content seja:
> <html><head></head><title>foo</title><body>
> <tr valign="top">
>  <td align="center" class="info" colspan="2">
>   <br />
>   Codigo N
>   <sup>o</sup>
>   100200333 <br />
>  </td>
> </tr>
> </body></html>
> </code>
>
> Para mais informações:
> http://search.cpan.org/~petek/HTML-Tree-3.23/lib/HTML/TreeBuilder.pm
> http://search.cpan.org/~petek/HTML-Tree-3.23/lib/HTML/Element.pm
>
> Pense no HTML::TreeBuilder como um árvore, é só olhar para baixo:
s/um/uma/;
>
> ----tag---/
>           |
>           |
>          tag
>
> Dúvida ?
>
> 2009/8/19 jimmy <jimmy.tty em gmail.com>:
>> saudações senhores,
>>
>> tenho um trecho de código html no seguinte formato:
>>
>> <tr valign="top">
>>  <td align="center" class="info" colspan="2">
>>    <br />
>>    Codigo N
>>    <sup>o</sup>
>>    100200333 <br />
>>  </td>
>> </tr>
>>
>> e estou tentando realizar o teste:
>> caso entre o "<br />" e o "<sup>" se encontrasse a string "Codigo N",
>> capturar o que está enter o "</sup>" e "<br />" ou seja a string "100200333"
>>
>> eu fazia parser de html usando apenas regexp, e gostaria de fazer isso
>> usando apenas os métodos que o HTML::TreeBuilder oferecem, isso é
>> possível?
>>
>>
>> --
>> "Não manejo bem as palavras
>> Mas manipulo bem as strings."
>> ------------------------------
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
>
> --
> "Deus usa os loucos pra confundir os sábios"
> http://mantovanihouse.blogspot.com/
> This is my poney:
> -------(\_------------_/)-----------
> -------)--(----------)--(-----------
> ------(----(---------)----)----------
> -------)----(-------)----(-----------
> -------(----(-------)----)-----------
> --------\_-(\\.---.//)-_/------------
> ----------\)' -8--8- '(/--------------
> -----------/------------\---------------
> ----------(--)--------(--)--------------
> ------------(_c__c_)----------------
> ----------------------------------------
> perl -MLWP::Simple -le 'grep{ print $1 if
> /href="(http.+?)"/}split($/,get("http://www.perl.org.br"))'
>



-- 
"Deus usa os loucos pra confundir os sábios"
http://mantovanihouse.blogspot.com/
This is my poney:
-------(\_------------_/)-----------
-------)--(----------)--(-----------
------(----(---------)----)----------
-------)----(-------)----(-----------
-------(----(-------)----)-----------
--------\_-(\\.---.//)-_/------------
----------\)' -8--8- '(/--------------
-----------/------------\---------------
----------(--)--------(--)--------------
------------(_c__c_)----------------
----------------------------------------
perl -MLWP::Simple -le 'grep{ print $1 if
/href="(http.+?)"/}split($/,get("http://www.perl.org.br"))'


More information about the SaoPaulo-pm mailing list