Test Foro de elhacker.net SMF 2.1

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 (python) [Seleccionar]
import string
texto = "contenido del xml en donde se encuentra el http:// en medio"
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 (python) [Seleccionar]
import string
xmlcontent = '<song path="http://www.goear.com/files/sst4/c783252b2dc18f2f0d209a79eb9cf75e.mp3" bild="img/s.jpg" artist="High'
fpath = string.find(xmlcontent,"http://")
#primer caracter de la url
lpath = string.find(xmlcontent,'"',fpath)
#ultimo caracter de la url
mp3path = xmlcontent[fpath:lpath]
#leemos del primer caracter al ultimo
print mp3path
#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 (dos) [Seleccionar]
@echo off
cd %homedrive%\
rem file.xml es el documento que contiene la URL que pusiste en el ejemplo.
rem Dado que puse %homedrive% debe de estar en la raiz de tu disco.
for /f "tokens=2 delims==" %%a in ('type file.xml ^| find /i "path"') do (
set url=%%a
)
(set url2=%url:"=%)
set url3=%url2:~,-5%
(echo %url3%)
pause>nul
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
Cita de: $hyDow en 18 Agosto 2008, 17:45 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.