Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: madpitbull_99 en 22 Mayo 2011, 16:21 PM

Título: Parsear HTML con PHP – Simple HTML DOM Parser
Publicado por: madpitbull_99 en 22 Mayo 2011, 16:21 PM
Navegando por SourceForge (http://sourceforge.net) me encontré con una interesante aplicación para parsear código HTML. Su nombre es PHP Simple HTML DOM  Parser (http://sourceforge.net/projects/simplehtmldom/files/) 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 (http://simplehtmldom.sourceforge.net/) - Manual de Uso (http://simplehtmldom.sourceforge.net/manual.htm)

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

_HTML Parser for PHP 4 (http://sourceforge.net/projects/php-html/)

_PHP Simple HTML SAX Parser (http://sourceforge.net/projects/simplehtmlsax/)

En NetTuts+ también hablan de esta librería para parsear HTML:  Parsing and Screen Scraping with the Simple HTML DOM Library (http://net.tutsplus.com/tutorials/php/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.
Título: Re: Parsear HTML con PHP – Simple HTML DOM Parser
Publicado por: Nakp en 22 Mayo 2011, 20:05 PM
Data Mining :D
Título: Re: Parsear HTML con PHP – Simple HTML DOM Parser
Publicado por: madpitbull_99 en 23 Mayo 2011, 21:27 PM
He encontrado uno más que proporciona una sintaxis parecida a SQL para parsear: htmlSQL (http://www.jonasjohn.de/lab/htmlsql.htm).

Sí, se podría decir que es Data Mining, pero no tienes que usar ningún algoritmo, ni redes neuronales.
Título: Re: Parsear HTML con PHP – Simple HTML DOM Parser
Publicado por: BlackM4ster en 1 Abril 2014, 09:54 AM
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);
}