[Talk-cl] Script para Leer datos Paraderos Transantiago

Danilo Lacoste danilo en lacosox.org
Vie Abr 23 15:33:43 BST 2010


o quizá murió por exceso de consultas?

deberíamos tener una copia de todos los datos, de esa forma
aseguraríamos quizá poder calcular velocidades históricas o no?

2010/4/23 Julio Costa Zambelli <julio.costa en openstreetmap.cl>:
> Bajaron el sitio del SIMT nuevamente :( Hay que conseguir una fuente
> confiable para estos datos...
>
>
> 2010/4/23 Herman Vega <hvegax en gmail.com>
>>
>> Me di cuenta que la línea "$paradero = DOM($simt);" debe ser "$paradero =
>> trim(DOM($simt));" del código que envié, pero me gusto más lo que hizo
>> Julio.
>>
>> slds.-
>>
>> 2010/4/23 Julio Costa Zambelli <julio.costa en openstreetmap.cl>
>>>
>>> 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 <hvegax en gmail.com>
>>>>
>>>> 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 <danilo en lacosox.org>
>>>>>
>>>>> 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:
>>>>>
>>>>> dalacost en 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
>>>>> Talk-cl en openstreetmap.org
>>>>> http://lists.openstreetmap.org/listinfo/talk-cl
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Herman  Vega  Jara
>>>> hvegax[a]gmail.com
>>>>
>>>> _______________________________________________
>>>> Talk-cl mailing list
>>>> Talk-cl en openstreetmap.org
>>>> http://lists.openstreetmap.org/listinfo/talk-cl
>>>>
>>>
>>
>>
>>
>> --
>> Herman  Vega  Jara
>> hvegax[a]gmail.com
>
>



-- 
www.lacosox.org




More information about the Talk-cl mailing list