<br>Ótimo pessoal, funcionou perfeitamente valeu de muito a ajuda de vocês.<br>Consegui fazer o que eu queria.<br><br><div class="gmail_quote">2008/11/27 André Garcia Carneiro <span dir="ltr">&lt;<a href="mailto:andre.garcia.carneir@terra.com.br">andre.garcia.carneir@terra.com.br</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d">2008/11/27 Daniel de Oliveira Mantovani &lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com">daniel.oliveira.mantovani@gmail.com</a>&gt;<br>

<br>
&gt; &nbsp; &nbsp;Olá Monges!<br>
<br>
&gt; &nbsp; &nbsp;Estou tentando retirar o conteúdo de uma tabela:<br>
&gt; &nbsp; &nbsp;<a href="http://www.magicdomain.com.br/index.php?sub=colecoes&amp;idSerie=57" target="_blank">http://www.magicdomain.com.br/index.php?sub=colecoes&amp;idSerie=57</a><br>
<br>
&gt; &nbsp; &nbsp;No caso eu só quero o nome e o preço.<br>
&gt; &nbsp; &nbsp;Tag =&gt; td<br>
&gt; &nbsp; &nbsp;Class =&gt; titulosNome<br>
<br>
&gt; &nbsp; &nbsp;Tag =&gt; td<br>
&gt; &nbsp; &nbsp;Class =&gt; titulosPreco<br>
<br>
&gt; &nbsp; &nbsp;Dentro da tag td e da classe titulosNome quero pegar só o nome. Porém não estou achando uma forma.<br>
&gt; &nbsp; &nbsp;Olhem meu script:<br>
&gt; &nbsp; &nbsp;<a href="http://scsys.co.uk:8001/20980" target="_blank">http://scsys.co.uk:8001/20980</a><br>
<br>
<br>
<br>
<br>
</div>Que nome? Bota um exemplo do código HTML, e diga exatamente o que você quer, por favor...</blockquote><div><a href="http://www.magicdomain.com.br/index.php?sub=colecoes&amp;idSerie=87">http://www.magicdomain.com.br/index.php?sub=colecoes&amp;idSerie=87</a> <br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div class="Ih2E3d"><br>
<br>
<br>
&gt; &nbsp; &nbsp;Eu sei que está tudo errado, eu pequei um modelo, pra ser exacto o modelo que o André passou aqui na lista.<br>
<br>
<br>
</div>Não me culpe se você ainda não aprendeu a usar o módulo. Eu uso isso todo o santo dia. Com certeza eu sabia do<br>
que eu tava falando...</blockquote><div>Tava certo no seu exemplo, na outra thread, foi eu que quis usar para outra coisa ;) <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<div class="Ih2E3d"><br>
<br>
<br>
&gt; &nbsp; &nbsp;Não entendi, como funciona o módulo para fazer o parser.<br>
<br>
<br>
<br>
</div>É, você não entendeu mesmo, pois bem, vamos lá:<br>
<br>
Dado uma tabela escrita em HTML:<br>
<br>
&lt;table id=&#39;table_001&#39; class=&#39;t1&#39;&gt;<br>
 &nbsp; &nbsp; &nbsp;&lt;tr&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_tituloprod_001&#39;&gt;Titulo da Imagem&lt;/td&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_imagem_001&#39;&gt;&lt;img src=&#39;<a href="http://www.algumhost.com.br/imagens/imagem_001.jpg" target="_blank">http://www.algumhost.com.br/imagens/imagem_001.jpg</a>&#39;&gt;&lt;/td&gt;<br>

 &nbsp; &nbsp; &nbsp;&lt;/tr&gt;<br>
&lt;/table&gt;<br>
<br>
<br>
HTML::TreeBuilder - Faz o parser(utilizando HTML::Parser e outros módulos), para devolver um objeto, que na<br>
verdade é uma lista de objetos HTML::Element organizados em forma de árvores(grosseiramente é isso). Se você<br>
estiver familiarizado com uma estrutura de árvore, saberá que cada nó de uma árvore pode ter nós e ramos, e é<br>
exatamente disso que a estrutura de um objeto HTML::TreeBuider trata.<br>
<br>
Imagine uma árvore de cabeça para baixo, onde a raíz é um objeto que representa o documento HTML inteiro, e os<br>
nós abaixo desse objeto, também são objetos que representam as tags HTML do documento.<br>
<br>
No código acima, o nó raiz é o código todo. Mas suponhamos que eu quisesse a informação que está em um dos<br>
&#39;tds&#39;, por exemplo, o Título da imagem1( o texto), como fazer isso com HTML::TreeBuider?<br>
<br>
&lt;code&gt;<br>
#! /usr/bin/perl -w;<br>
use strict;<br>
use HTML::TreeBuider;<br>
my $htmlcode = &quot;<br>
&lt;table id=&#39;table_001&#39; class=&#39;t1&#39;&gt;<br>
 &nbsp; &nbsp; &nbsp;&lt;tr&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_tituloprod_001&#39;&gt;Titulo da Imagem1&lt;/td&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_imagem_001&#39;&gt;&lt;img src=&#39;<a href="http://www.algumhost.com.br/imagens/imagem_001.jpg" target="_blank">http://www.algumhost.com.br/imagens/imagem_001.jpg</a>&#39;&gt;&lt;/td&gt;<br>

 &nbsp; &nbsp; &nbsp;&lt;/tr&gt;<br>
 &nbsp; &nbsp; &nbsp;&lt;tr&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_tituloprod_002&#39;&gt;Titulo da Imagem2&lt;/td&gt;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;td id=&#39;td_imagem_002&#39;&gt;&lt;img src=&#39;<a href="http://www.algumhost.com.br/imagens/imagem_001.jpg" target="_blank">http://www.algumhost.com.br/imagens/imagem_001.jpg</a>&#39;&gt;&lt;/td&gt;<br>

 &nbsp; &nbsp; &nbsp;&lt;/tr&gt;<br>
<br>
&lt;/table&gt;<br>
&quot;;<br>
<br>
#Nesse momento, eu tenho o objeto que representa o código HTML inteiro.<br>
my $tree = HTML::TreeBuider-&gt;new_from_content($htmlcode);<br>
#Capturando a informação do td<br>
my $td &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= $tree-&gt;look_down(_tag =&gt; &#39;td&#39;,id=&gt;&#39;td_tituloprod_001&#39;);<br>
my $texto &nbsp; &nbsp; &nbsp; &nbsp;= $td-&gt;as_text if $td;<br>
print &quot;\n$texto&quot;;#O resultado disso, se os nomes dos atributos estiverem corretos será &#39;Titulo da Imagem 1&#39;<br>
&lt;/code&gt;<br>
<br>
Repare que nesse caso, eu fui direto no nó que representa o código HTML &#39;&lt;td id=&#39;td_tituloprod_001&#39;&gt;Titulo da<br>
Imagem1&lt;/td&gt;&#39;, através do método &#39;look_down&#39;. Esse método, permite que eu olhe a partir de um nó, para os seus<br>
filhos, ou seja, se você lembrar da imagem da árvore de cabeça para baixo, eu na verdade estou dizendo ao<br>
objeto para olhar para os objetos &#39;abaixo&#39;... Existe o método look_up também, mas pra facilitar, vamos nos<br>
atentar em look_down.<br>
<br>
Para o problema que estou tentando te explicar, look_down foi feito a partir do objeto &#39;$tree&#39;, ou seja, a<br>
partir do nó raiz da árvore. Isso significa que eu poderia ter alcançado qualquer outra tag(ou nó) da árvore,<br>
já que é o nó raiz. Pois bem, uma vez que eu guardei esse objeto em $td - lembre-se:&#39;my $td &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=<br>
$tree-&gt;look_down(_tag =&gt; &#39;td&#39;,id=&gt;&#39;td_tituloprod_001&#39;);&#39;, agora eu tenho em $td um objeto que representa a tag<br>
&#39;&lt;td id=&#39;td_tituloprod_001&#39;&gt;Titulo da Imagem1&lt;/td&gt;&#39;. Repare que, a partir de &#39;$td&#39;, seguindo o conceito de<br>
árvore, eu não consigo chegar a nó nenhum abaixo dele, porque não existe nenhuma tag dentro da &#39;td&#39;, com o<br>
método look_down, pois já cheguei na &#39;folha&#39; da árvore, ou seja, não há mais ninguém abaixo.<br>
<br>
É a mesma coisa se vc for pensar em diretórios, suponha que eu tenha a seguinte estrutura:<br>
<br>
perl<br>
 &nbsp; |<br>
 &nbsp; -&gt;rules<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;the<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;world<br>
<br>
foo<br>
|<br>
-&gt;subfoo<br>
<br>
<br>
Uma vez que eu tenha percorrido os diretórios até &#39;world&#39;. Não há mais nada abaixo dele, portanto não tem como<br>
acessar alguma coisa abaixo dele. Se eu quisse acesar o diretório &#39;subfoo&#39;, a partir de world, teria que subir<br>
os diretórios para depois descer novamente e chegar em subfoo. HTML::TreeBuider funciona da mesma forma.<br>
Transferindo a analogia do sistema de diretórios para as tags HTML, teria-se o seguinte:<br>
<br>
<br>
table id=&#39;table_001&#39; class=&#39;t1&#39;<br>
|<br>
-&gt;tr<br>
 &nbsp; &nbsp;|<br>
 &nbsp; &nbsp;-&gt;td id=&#39;td_tituloprod_001&#39;&gt;Titulo da Imagem1<br>
<br>
No entanto, existem uma diferença importante. Diferentemente da analogia com os diretórios, não necessariamente<br>
eu tenho que percorrer todos os nós um a um para chegar no meu objetivo, desde que o nó que se quer alcançar,<br>
esteja abaixo do nó onde se está no momento, ou seja, para alcançar o meu td, eu não tive que passar por &#39;tr&#39;,<br>
para depois ir a td. Posso ir direto ao &#39;td&#39; que quero alcançar, porque no caso estava no nó raiz do objeto.<br>
<br>
Outra coisa importante, é que você pode colocar tudo em contexto de array, por exemplo, se eu quisesse, nesse<br>
código capturar todos os tds, eu chamaria o look_down dessa maneira:<br>
<br>
&lt;code&gt;<br>
my @tds = $tree-&gt;look_down(_tag =&gt; &#39;td&#39;);<br>
&lt;/code&gt;<br>
<br>
Aí eu tenho uma lista com todos os tds abaixo do nó raiz.<br>
<br>
Acho que consegui colocar o conceito para você. O resto você pode ver lendo a documentação e perguntando por<br>
aqui na lista. E poste os seus códigos por favor pra ver em que pé que está.</blockquote><div>&nbsp;</div><div><a href="http://scsys.co.uk:8001/21003">http://scsys.co.uk:8001/21003</a> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
Cheers!&nbsp;<br></blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
<br>
<br>
<br>
<br>
&gt; &nbsp; &nbsp;--<br>
<div class="Ih2E3d">&gt; &nbsp; &nbsp;Procuro emprego C.V:<br>
&gt; &nbsp; &nbsp;<a href="http://www.danielmantovani.site50.net/" target="_blank">http://www.danielmantovani.site50.net/</a><br>
<br>
&gt; &nbsp; &nbsp;print &quot;\x54\x68\x65\x20\x53\x69\x6c\x65\x6e\x74\x20\x47\x75\x61\x72\x64\x69\x61\x6e&quot;,$/<br>
<br>
<br>
 &nbsp; &nbsp;_______________________________________________<br>
</div> &nbsp; &nbsp;SaoPaulo-pm mailing list<br>
 &nbsp; &nbsp;<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 &nbsp; &nbsp;<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
<br>
<br>
<br>
<br>
--<br>
André Garcia Carneiro<br>
Analista/Desenvolvedor Perl<br>
<br>
<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Procuro emprego C.V:<br><a href="http://www.danielmantovani.site50.net/">http://www.danielmantovani.site50.net/</a><br><br>print &quot;\x54\x68\x65\x20\x53\x69\x6c\x65\x6e\x74\x20\x47\x75\x61\x72\x64\x69\x61\x6e&quot;,$/<br>
<br>