fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Python - Extraccion...
 
Avisos
Vaciar todo

Python - Extraccion de datos de cadenas

6 Respuestas
2 Usuarios
0 Reactions
8,382 Visitas
garrocha
Respuestas: 1110
Topic starter
(@garrocha)
Ardero
Registrado: hace 19 años

Hola a todos, a ver si alguien puede echarme una mano, me gustaria extraer datos de una cadena de caracteres (formateada como XML) en Python.

La cadena es la siguiente:

HTTP/1.1 200 OK

Date: Sun, 19 Nov 2006 13:00:20 GMT

Server: Microsoft-IIS/6.0

X-Powered-By: ASP.NET

X-AspNet-Version: 1.1.4322

Cache-Control: private, max-age=0

Content-Type: text/xml; charset=utf-8

Content-Length: 1166

<xml><soap><soap><GetPasoParadaREGResponse><GetPasoParadaREGResult>
<PasoParada><cabecera>false</cabecera>
<e1><minutos>3</minutos><metros>675</metros><tipo>NORMAL</tipo></e1>
<e2><minutos>20</minutos><metros>4141</metros><tipo>NORMAL</tipo></e2>
<linea>05</linea><parada>200</parada><ruta>PRADO PTA.TRIANA </ruta></PasoParada>
<PasoParada><cabecera>false</cabecera>
<e1><minutos>1</minutos><metros>164</metros><tipo>NORMAL</tipo></e1>
<e2><minutos>23</minutos><metros>6309</metros><tipo>NORMAL</tipo></e2>
<linea>06</linea><parada>200</parada><ruta>BARQUETA S.LAZARO </ruta></PasoParada>
<PasoParada><cabecera>false</cabecera>
<e1><minutos>17</minutos><metros>3440</metros><tipo>NORMAL</tipo></e1>
<e2><minutos>17</minutos><metros>3411</metros><tipo>NORMAL</tipo></e2><linea>C1</linea><parada>200</parada><ruta>CARTUJABARQUETA
</ruta></PasoParada></GetPasoParadaREGResult>
<status>1</status></GetPasoParadaREGResponse></soap></soap>

Basicamente lo que quiero es extraer los datos que estan entre las etiquetas (<etiqueta>dato</etiqueta>), en C creo que sabria hacerlo, pero python tiene una forma algo distinta de tratar las cadenas, ademas se supone que python trae librerias especializadas en Xml, pero no doy con la tecla

Pd.- Esa es la respuesta del servidor de Tussam (La empresa de autobuses urbanos de Sevilla) http://www.infobustussam.com:9001/ en concreto da informacion sobre los tiempos de llegada de los autobuses a una parada. La finalidad del programa es que me avise del momento optimo para salir del piso para coger el autobus sin esperar demasiado y que llege a tiempo al destino (tiempo piso-parada+ tiempodellegadadelbussacadodeinternet+ tiempomedioparada-destino) el primer y ultimo dato seran en principio "empiricos", siendo el de enmendio el que intento extraer de la pagina que e puesto arriba

Saludos

Responder
5 respuestas
garrocha
Respuestas: 1110
Topic starter
(@garrocha)
Ardero
Registrado: hace 19 años

Y el codigo que muestra esa cadena es:
import telnetlib

HOST = "www.infobustussam.com"
PORT = 9001
LINEA = "6"
PARADA = "200"

telnet = telnetlib.Telnet(HOST, PORT)

##Lo que viene a bajo es el resultado de capturar los paquetes entre el pc y el servidor de tussam

telnet.write("""POST /services/dinamica.asmx HTTP/1.1
Host: www.infobustussam.com:9001
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1) Gecko/20061010 Firefox/2.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Referer: http://www.infobustussam.com:9001/linea ... iones2.swf
Content-type: text/xml; charset=utf-8
SOAPAction: " http://tempuri.org/GetPasoParadaREG "
Content-length: 402

<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:xsd=" http://www.w3.org/2001/XMLSchema " xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope /"><SOAP-ENV:Body><GetPasoParadaREG xmlns=" http://tempuri.org/ ">""")
telnet.write("""<linea>C1</linea><parada>"""+PARADA+"""</parada><medio>3</medio><status>0</status></GetPasoParadaREG></SOAP-ENV:Body></SOAP-ENV:Envelope>""")

Coco = telnet.read_until("coco",timeout=2) ##Coco es un nombre comodin para la variable, podia haber sido "yogu de platano" igualmente
telnet.close ##la conexion por defecto es una "keep alive" (aunque yo no quiera) asi que forzamos el cierre de la conexion
print Coco

Responder
demostenes
Respuestas: 62
(@demostenes)
Ardero
Registrado: hace 19 años
Responder
garrocha
Respuestas: 1110
Topic starter
(@garrocha)
Ardero
Registrado: hace 19 años

que maravilla con Amara, esto ya tiene otro color, si esque tenia que haber preguntao antes 😀

Muchas gracias Dem

Pd.- cuando tenga terminada esta parte cuelgo el codigo 😉

Responder
demostenes
Respuestas: 62
(@demostenes)
Ardero
Registrado: hace 19 años

así me gusta, colgando el código garrocha.
Lo estaremos esperando :mrgreen:

Responder
Página 1 / 2
Compartir: