Parsear HTML con PHP – Simple HTML DOM Parser

Iniciado por madpitbull_99, 22 Mayo 2011, 16:21 PM

0 Miembros y 1 Visitante están viendo este tema.

madpitbull_99

Navegando por SourceForge me encontré con una interesante aplicación para parsear código HTML. Su nombre es PHP Simple HTML DOM  Parser y está orientada a parsear el DOM de HTML.

Primero vamos a descargarla e incluirla en nuestra aplicación de prueba. Un ejemplo básico de como utilizarla es:

Código (php) [Seleccionar]

<?php
    
//Basic HTML parsing with PHP
    
include("simplehtmldom/simple_html_dom.php");
 
    
//Pasamos todo el contenido de la pagina a texto plano
    //echo $htmlCode = file_get_html('http://madhacking.com')->plaintext;
 
    
$htmlCode file_get_html('http://madhacking.com');
 
    
// Encontrar todas las imageness
    
foreach($htmlCode->find('img') as $element)
       echo 
$element->src '<br>';
 
    echo 
"<hr />";
 
    
// Mostrar todos los links
    
foreach($htmlCode->find('a') as $element)
       echo 
$element->href '<br>';
 
?>



Vamos a hacer un ejemplo que muestre todos los artículos de mi blog:

Código (php) [Seleccionar]

<?php
    $htmlCode 
file_get_html('http://madhacking.com');
    
$posts $htmlCode->find('div[class=post]');
 
    foreach(
$htmlCode->find('div[class=post]') as $article) {
        
$item['title']     = $article->find('h2'0)->plaintext;
        
$item['info']      = $article->find('div[class=post-info]',0);
        
$item['body']      = $article->find('div[class=post-content]'0)->plaintext;
        
$item['category']  = $article->find('div[class=post-meta]'0)->plaintext;
        
$articles[] = $item;
    }
 
    echo 
"<pre>";
    
print_r($articles);
    echo 
"</pre>";
 
?>



Como podéis ver el funcionamiento es muy sencillo y no requiere esfuerzo programar algo sencillo. Os dejo los enlaces del proyecto.

Página Oficial: PHP Simple HTML DOM Parser - Manual de Uso

Si buscáis en SourceForge encontraréis proyectos similares, como:

_HTML Parser for PHP 4

_PHP Simple HTML SAX Parser

En NetTuts+ también hablan de esta librería para parsear HTML:  Parsing and Screen Scraping with the Simple HTML DOM Library.


En definitiva, se trata de una librería que no puede ahorrar mucho trabajo, si alguna vez has tenido que parsear HTML usando regex, lo entenderás.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

Nakp

Ojo por ojo, y el mundo acabará ciego.

madpitbull_99

He encontrado uno más que proporciona una sintaxis parecida a SQL para parsear: htmlSQL.

Sí, se podría decir que es Data Mining, pero no tienes que usar ningún algoritmo, ni redes neuronales.



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

BlackM4ster

Alguien sabe como puedo procesar todos los elementos del html usando este parser?
Estoy usando éste code para sacar todos los <a>, pero necesito que procese todos (img, link, script, etc etc)

Código (php) [Seleccionar]
foreach($html->find('a') as $link) {
Url_Absolutas_Cambio($link, $base_url);
}

- Pásate por mi web -
https://codeisc.com