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

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


<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:

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:

----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"))'


More information about the SaoPaulo-pm mailing list