Ver Mensaje Individual
  #12 (permalink)  
Antiguo 15/12/2009, 00:50
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 11 meses
Puntos: 20
Respuesta: Como parsear este HTML

Cita:
Iniciado por jackson666 Ver Mensaje
Código PHP:
<?php
$html
='tuArchivo.htm';
$dom=new DOMDocument();
$dom->load($html);
$tags=$dom->getElementsByTagName("div");
    foreach(
$tags as $t=>$v){
        for(
$i=0;$i<count($v);$i++){
            echo 
$tags->item($t)->nodeValue."<br />";
        }
    }
?>
Eso te deberia imprimir todos los nodos de texto dentro de los divs
He probado hacerlo como me indicas pero sigue arrojando errores, y sino estoy equivocado es porque el código de la web no es XHTML válido. Lo cual si esto es cierto y solo funciona con XHTML válido lo llevo claro, ya que las webs que quiero parsear no son mias, estan en la red y no puedo modificar el código... sino que gracia.

HTML
Código HTML:
Ver original
  1. <div class="contenedor">
  2. <div class="otro_contenedor">
  3. <div class="aaaa">
  4.     <p>aaaaaaaaaaaaaaa</p>
  5.     </div>
  6.     <div class="bbbb">
  7.     <p>bbbbbbbbbbbbb</p>
  8.     </div>
  9.  
  10.     <div class="miniTabsContent">
  11.         <div class="polltop1"><h3>Encuesta</h3></div>
  12.         <div class="pollmiddle">
  13.         <img src="#" alt="" title="" width="68" height="68">
  14.         <p class="date">13.12.2009</p>
  15.         <p class="pollQuestion">¿Pregunta encuesta?</p>  
  16.         <form action="votarencuesta" method="post" name="votacionForm" id="a3poll" onsubmit="javascript:{if ( hasCookie('haVotado') ) {alert('Tu voto ya ha sido registrado'); return false; } else {return validateVotacionForm(this)};}">
  17.             <input name="9287452" value="9287452" type="hidden">
  18.             <input name="contenido" value="0" type="hidden">
  19.             <label for="question1">
  20.                 <input name="respuesta" value="9287451" id="question1" type="radio">No
  21.             </label>
  22.             <label for="question2">
  23.                 <input name="respuesta" value="9287450" id="question2" type="radio">
  24.             </label>
  25.             <div><input value="VOTAR" type="submit"><a href="#" class="normaLink">Ver resultados</a></div>
  26.         </form>
  27.         </div>
  28.         <div class="pollbot1"></div>
  29.     </div>
  30.    
  31. </div> <!-- fin otro_contenedor -->
  32. </div> <!-- fin contenedor -->
  33. </body>
  34. </html>

PARSER
Código PHP:
Ver original
  1. <?php
  2. $html='web.htm';
  3. $dom=new DOMDocument();
  4. $dom->load($html);
  5. $tags=$dom->getElementsByTagName("div");
  6.     foreach($tags as $t=>$v){
  7.         for($i=0;$i<count($v);$i++){
  8.             echo $tags->item($t)->nodeValue."<br />";
  9.         }
  10.     }
  11. ?>

ERRORES
Código:
Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: input line 22 and label in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 23 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: input line 25 and label in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 26 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: input line 27 and div in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 27 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: div line 27 and form in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 28 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: label line 24 and div in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 29 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: label line 21 and div in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 31 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: input line 20 and div in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 33 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: input line 19 and div in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 34 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: form line 18 and body in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 35 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: img line 15 and html in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag div line 14 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag div line 12 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag div line 4 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag div line 3 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag body line 2 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4

Warning: DOMDocument::load() [function.DOMDocument-load]: Premature end of data in tag html line 1 in file:///C%3A/AppServ/www/00-laboratorio_test/secciones/HTML_parser/web.htm, line: 36 in C:\AppServ\www\00-laboratorio_test\secciones\HTML_parser\HTML_parser.php on line 4
Gracias de antemano!