[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