Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kasswed en 18 Agosto 2008, 13:22 pm



Título: Buscar texto en XML [Python]
Publicado por: Kasswed en 18 Agosto 2008, 13:22 pm
Buenas.

Vamos a ver, yo quiero lo primero abrir un XML, y una vez ahi buscar unapalabra, y a partir de esa palabra copiar X caracteres a una variable.

O sea, que si el XML contiene:

Citar
<?xml version="1.0" encoding="UTF-8"?>
<songs>
   <song path="http://www.goear.com/files/sst4/c783252b2dc18f2f0d209a79eb9cf75e.mp3" bild="img/s.jpg" artist="High and Mighty Color" title="Dive into yourself"/>
</songs>

Quiero buscar "path=" y a partir de ahicopiar la direccion que pone. He mirado funciones pero no atinoa encontrar la apropiada.

Alguna ayuda?

Gracias.


Título: Re: Buscar texto en XML [Python]
Publicado por: Novlucker en 18 Agosto 2008, 13:39 pm
Lo que debes de hacer es buscar, en lugar de path...http://  ;)

Código
  1. import string
  2. texto = "contenido del xml en donde se encuentra el http:// en medio"
  3. texto = string.find(texto,"http://")

La verdad, estoy bastante oxidado en python, pero para que se entienda mejor como obtengo la dirección en el script para descargar los archivos de goear (http://foro.elhacker.net/scripting/descargar_mp3s_desde_goear-t222234.0.html)

Lo que hago, es buscar el http, para asi ver donde comienza la cadena.... luego de esto, busco las comillas", partiendo de donde he encontrado el comienzo del texto, para que se entienda mejor... el http lo encuentro en el lugar 15, comienzo a buscar la comilla a patir de esto, ya que se que la próxima comilla, marca el final de la dirección web.... luego ya con la marca de donde empieza, y donde termina el texto, saco lo que hay en medio y obtengo la dirección  ;)

Esto me resulta sencillo en vbscript, pero python lo tengo algo abandonado, y no tengo el interprete ahora mismo para ayudarte mejor  :-\

Saludos


Título: Re: Buscar texto en XML [Python]
Publicado por: Novlucker en 18 Agosto 2008, 14:41 pm
Bueno, mira, he convertido la función que tenía... a python  :P

Código
  1. import string
  2. xmlcontent = '<song path="http://www.goear.com/files/sst4/c783252b2dc18f2f0d209a79eb9cf75e.mp3" bild="img/s.jpg" artist="High'
  3. fpath = string.find(xmlcontent,"http://")
  4. #primer caracter de la url
  5. lpath = string.find(xmlcontent,'"',fpath)
  6. #ultimo caracter de la url
  7. mp3path = xmlcontent[fpath:lpath]
  8. #leemos del primer caracter al ultimo
  9. print mp3path
  10. #nuestra url :P

Ten en cuenta que en xmlcontent estaría todo el contenido del xml
Saludos  ;)


Título: Re: Buscar texto en XML [Python]
Publicado por: leogtz en 18 Agosto 2008, 17:29 pm
Si te sirve aqui esta en Batch, dado el ejemplo que pusiste, mete la URL del path, hasta donde diga .mp3 en una variable, y luego es mostrada.

Saludos.

Código
  1. @echo off
  2. cd %homedrive%\
  3. rem file.xml es el documento que contiene la URL que pusiste en el ejemplo.
  4. rem Dado que puse %homedrive% debe de estar en la raiz de tu disco.
  5. for /f "tokens=2 delims==" %%a in ('type file.xml ^| find /i "path"') do (
  6. set url=%%a
  7. )
  8. (set url2=%url:"=%)
  9. set url3=%url2:~,-5%
  10. (echo %url3%)
  11. pause>nul
  12. goto:eof


Título: Re: Buscar texto en XML [Python]
Publicado por: $hyDow en 18 Agosto 2008, 17:45 pm
rockox te viciaste a find hehe


Título: Re: Buscar texto en XML [Python]
Publicado por: leogtz en 18 Agosto 2008, 20:29 pm
rockox te viciaste a find hehe

No entendi  :huh:  ;D  :-X


Título: Re: Buscar texto en XML [Python]
Publicado por: Kasswed en 18 Agosto 2008, 21:53 pm
Ok, yo lo decía leyéndolo directamente desde Internet sin necesidad de bajarlo, pero bueno. Haré un wget, lo bajo y lo abro con open(), y ya usaré string.find(), y nada luego pues lo borraré xD

Gracias.


Título: Re: Buscar texto en XML [Python]
Publicado por: Ragnarok en 24 Agosto 2008, 00:27 am
Tiene que haber una forma mejor de hacerlo, todavía no me lo he leído, pero cuando pueda leeré esto:
http://docs.python.org/dev/3.0/library/markup.html

por si alguien tiene más tiempo que yo y se me adelanta.