[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