Pueden ver un experimento que estuve haciendo ayer temprano con htmlSQL (
http://www.jonasjohn.de/lab/htmlsql.htm), en
http://www.openstreetmap.cl/ts/examples/demo_12.php

El código:

<?php

    /*
    ** htmlSQL - Example 12
    **
    ** Shows how to replace the user agent and the referer with
    ** custom values
    */

    include_once("../snoopy.class.php");
    include_once("../htmlsql.class.php");

    $wsql = new htmlsql();

    // set a individual agent:
    $wsql->set_user_agent('MyAgentName/0.9');

    // set a new referer:
    $wsql->set_referer('http://www.openstreetmap.cl/');

    // connect to a URL
    if (!$wsql->connect('url', '
http://web.simt.cl/Piv/servicios.action?paradero=PC710')){
        print 'Error mientras se conectaba: ' . $wsql->error;
        exit;
    }

    /* execute a query:

       This query returns all text arrays in a td with width="80":
    */
    if (!$wsql->query('SELECT text FROM td WHERE $width == "80"')){
        print "Error de consulta: " . $wsql->error;
        exit;
    }

    // fetch results as array
    foreach($wsql->fetch_array() as $row){

        print_r($row);

    }

?>


El problema con la página de la cual estamos extrayendo los datos (más allá
de lo horrible del html que se esta usando) es que no hay elementos
distintivos en las etiquetas que rodean a "Distancia (mts)" Versus los que
rodean a la distancia de los dos buses. En ese sentido quizás habría que
usar las etiquetas que generan el encabezado y el cierre de la tabla como
referencias, y extraer y trabajar las filas que están en medio.


2010/4/23 Herman Vega <[email protected]>

> Aquí va en php-cli, la ejecución es lenta por el servidor.
>
> *<?php
>
> function DOM($element)
> {
>     $contenido = "";
>     $children = $element->childNodes;
>     foreach ($children as $child)
>     {
>         $tmp_dom = new DOMDocument();
>         $tmp_dom->appendChild($tmp_dom->importNode($child, true));
>         $contenido.=str_replace("<br>","",trim($tmp_dom->saveHTML()))."\n";
>     }
>     return $contenido;
> }
>
> $dom= new DOMDocument();
> // get paraderos
> $dom->loadHTML(file_get_contents("http://web.simt.cl/Piv/paraderos.action
> "));
> $dom->preserveWhiteSpace = true;
>
> $domSIMT = $dom->getElementsByTagName("a");
>
> foreach ($domSIMT as $simt)
> {
>         $paradero = DOM($simt);
>         if ($paradero != "") {
>                 echo "PARADERO: $paradero\n";
>                 // get details foreach stopbus
>                 $dom_detalle= new DOMDocument();
>                 $dom_detalle->loadHTML(file_get_contents("
> http://web.simt.cl/Piv/servicios.action?paradero=$paradero";));
>                 $dom_detalle->preserveWhiteSpace = true;
>                 $domDET = $dom_detalle->getElementsByTagName("font");
>                 foreach ($domDET as $det)
>                 {
>                         echo DOM($det);
>                 }
>         }
> }
>
> ?>*
>
>
> 2010/4/23 Danilo Lacoste <[email protected]>
>
>> Partiré con nuevo hilo para este tema.
>>
>> En contexto con nuestro análisis para verificar si es factible extraer
>> los datos del transantiago, he creado este pequeño script al cual
>> todavía le falta la parte más importante (leer los tiempos de los
>> buses cercanos), pero ya es capaz de leer datos básicos del paradero y
>> hora de referencia.
>>
>> Les dejo la idea, si alguien quiere construir uno en otro lenguaje,
>> sería genial.
>>
>> Por ahora solo tiene cargada la lista de paraderos del recorrido C04
>> (se editan en el archivo paraderos)
>>
>> salida esperada:
>>
>> dalac...@urano:~/osm/transantiago$ ./test2.sh
>> descargando esto puede tomar su tiempo...
>> ----
>>            PC668
>>            CIRIO / NUEVA BILBAO
>>            23-04-2010
>>            00:06
>> ----
>>            PC669
>>            ESPIGAS / NUEVA BILBAO
>>            23-04-2010
>>            00:06
>> ----
>>            PC670
>>            ALBERTO HURTADO / NUEVA BILBAO
>>            23-04-2010
>>            00:06
>> ...
>> ..
>> ..
>>
>>
>>
>> saludos.
>>
>> --
>> www.lacosox.org
>>
>> _______________________________________________
>> Talk-cl mailing list
>> [email protected]
>> http://lists.openstreetmap.org/listinfo/talk-cl
>>
>>
>
>
> --
> Herman  Vega  Jara
> hvegax[a]gmail.com
>
> _______________________________________________
> Talk-cl mailing list
> [email protected]
> http://lists.openstreetmap.org/listinfo/talk-cl
>
>
_______________________________________________
Talk-cl mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk-cl

Responder a