Gracias Gracias:  1
Resultados 1 al 7 de 7

Tema: Suprimir parte del texto y elegir la linea a leer

  1. #1
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Blender Suprimir parte del texto y elegir la linea a leer

    Lo conseguiiii. (mirar esta pregunta para entender de que va la cosa: http://www.foro3d.com/archive/index.php/t-108867.html )

    He conseguido hacer leer a python 2 el texto html de una página web y mostrarme una sola linea.

    Por desgracia ocurre lo siguiente:

    1 - En el script tengo un montón de readlines. Tantas como para llegar hasta la línea 278 del HTML.
    2 - Al llegar a la línea 279 (por ejemplo) coge la línea completa.

    1er problema:

    Me gustaría poder simplificar mucho el script y para eso supongo (o almenos espero) que haya un comando o una extensión del comando "readline()" que me deje seleccionar directamente la línea a leer.

    De todas formas eso no creo que me vaya a servir de mucho puesto que al estar utilizando un servicio de páginas web gratuitas supongo que la línea donde se encuentra el dato que quiero cambia cada día.

    2º problema:

    Me encuentro en todo un problemon en este caso. Una vez cogida la línea me la lee completa. Incluida una parte que es algo así como "</div>" y tal vez algo más. Me gustaría saber como quitar la parte "</div>". Como resta no me deja porque se trata de un "str".

    Posible solucion:

    Leyendo "Python para todos" (un PDF al que le tenía mucho miedo) he encontrado la forma de leer todo el html de una web. Pero esto me lleva a los dos problemas anteriormente mecionados.

    Tambien encontré una parte que, según lo que yo he entendido, hace una búsqueda completa y solo lee la parte que se encuentra en la primera concidencia, hasta la segunda coincidencia.

    Creo que era este el comando: L.index(value[, start[, stop]])

    ¿Podrías indicarme algún ejemplo?

    ¿Pero como lo uso? ¿Me servirá para solucionar mis dos problemas en un solo comando? He ahí las cuestiones.

    De antemano gracias por la respuesta y agradecería que quien responda se surcriba a este tema. Es posible que la respuesta no me sirva del todo y por supuesto no me gustaría abrir otro tema para volver a preguntar lo mismo.

  2. #2
    Miembro Nuevo Avatar de robertsauri
    Fecha de ingreso
    Jul 2011
    Ubicación
    Catalunya
    Mensajes
    20

    Re: Suprimir parte del texto y elegir la linea a leer

    Has abierto ya tres hilos no? Cuatro? Ya no se ni en cual contestarte XD

    Bueno yo te dije que mejor lo aprendieses por tu cuenta porque si te escrivo el código sin más y solo haces copiar pegar dentro de dos semanas te vere preguntado de nuevo algo que ya te he dicho antes. Aun así te lo explico, me suscrivo al hilo y si tienes dudas pregunta aquí.

    Antes que nada, aunque dices que no tienes tiempo, es muy importante que actualizes a una versión de Blender con python 3, a poder ser la última, porque se incluyen muchas mejoras y muchos nuevos scripts no te van a funcionar en Python 2. Por ejemplo la librería de python 3 para interacion con webs es completamente distinta a la de Python 2. Yo te lo voy a explicar con Python 3, que es el que uso, si no quieres complicarte actualiza, sino tendrás que buscar las funciones que pondré para Python 2.

    La última vez te di este codigo: versión = float(urllib.urlopen("http://www.lawebdeljuego.com/act.versión"))

    Ahora te dejo todo entero y tasteado, con mi web para ello:

    Código:
    #Definimos la función que nos va a servir para sacar el HTML, le pasamos como parámetro la URL.
    def ExtraerHTML(URL):
     from urllib import request 
     #importa solo la clase request dentro de la librería urllib.
     
     Web = request.urlopen(URL) #Crea un objecto de tipo "Web", con la URL que le hemos pasado.
     Código = Web.read().decode("iso-8859-1") 
     #Gurda el archivo de la web (codigo fuente) en la variable "Texto".
     #Tambien lo decodifica en el estándar iso-8859-1, el estándar a eleguir depende del archivo.
     
     Web.close() #Cierra la conexión con el servidor donde está alojada la web.
    
     #print(Codigo)
     #Esto imprimiria en pantalla el código fuente.
     
     return Código #Retorna el código fuente ya decodificado como una variable string.
    
    #Esta función recorta lo que este entre los dos parámetros dados (St1 y St2), todo lo demás lo elimina. 
    def Exclude(text, St1, St2):
     a = text.find(St1) #Retorna la posición de la primera coincidencia con St1.
     b = text.find(St2, a) #Igual que la anterior, pero empieza a buscar a partir de la posición de a.
     
     #return text[a:b] #Retorna el fragmento comprendido entre St1 y St2, pero sin eliminar St1.
     return text[a+len(St1):b] #Retorna solo el fragmento deseado.
     #La función len() cuenta el número de caracteres de una cadena (string). O de cualquier otro tipo de dato.
     #Se usa [ y ] para selecionar un elemento de una matriz o cadena, el : indica que se van a retornar todos los elementos
     #comprendidos entre esos indices.
     
    CFuente = ExtraerHTML("http://www.bubbleracer.xtrweb.com/") #Ejecuta la función para sacar el HTML y guarda el resultado en CFuente.
    #print(CFuente) #Imprime el Código Fuente, que esta guardado en CFuente.
    Cabecera = Exclude(CFuente, "<title>", "</title>") #Retorna solo la cabecera de la web. 
    print(Cabecera)
    Esta todo comentado. Como ves lo que hago es crear dos funciones, una para leer todo el contenido de la web, y la otra para recortar solo lo que me interese. De este modo en dos líneas de código puedo hacer eso para las webs que quiera. Si crees que es demasiado código descomentalo y ya veras como se reduce. Lo que yo haría en tu caso, como esas funciones son muy generales las pondria en un archivo a parte, por ejemplo "general.py" y luego las llamaria desde mi escript así:

    include general
    CFuente = general.ExtraerHTML("http://www.bubbleracer.xtrweb.com/")
    Cabecera = general.Exclude(CFuente, "<title>", "</title>")

    Saludos!

  3. #3
    Miembro Nuevo Avatar de robertsauri
    Fecha de ingreso
    Jul 2011
    Ubicación
    Catalunya
    Mensajes
    20

    Re: Suprimir parte del texto y elegir la linea a leer

    Ahora bien, aunque todo este código te sirve para lo que tu preguntas, el planteamiento esta mal. Si lo que quieres es que el juego mire si hay una nueva versión, si eso lo tiene que buscar dentro de un código HTML inmenso tardará un rato en descargar todo el HTML, si este es mucho. Y además si mucha gente hace eso a la web puedes colapsar el servidor. Mucho mejor poner los datos que quieres un un archivo único y colgarlo a la web en un directorio a parte. Por ejemplo tener algo así como:

    http://www.miweb.com/actualizar.txt

    o
    http://www.miweb.com/act/actualizar.txt

    en donde
    http://www.miweb.com/act/files/

    en cuya carpeta haya todos los archivos a actualizar. También si en lugar de "txt" pones otra extensión mola más. Por ejemplo:
    http://www.miweb.com/act/act.versión

    y etc. Te queda mucho camino, pero bueno ya que estoy te ayudo, hago un "actualizar.py" y para mi proximo juego solo lo tendré que implementar.

  4. #4
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Thumbs up Re: Suprimir parte del texto y elegir la linea a leer

    Gracias por tu aplisima respuesta.

    Realmente había tirado la toalla con esta pregunta por que después de tres días nadie me respondía.

    Me agrada ver que hay gente dispuesta a ayudar cuando alguien lo necesita.

    De nuevo gracias por la respuesta.

    Pero como ya dije utilizaré un sitio web gratuito para esto y no puedo cargar archivos en la página.

    Encontré hace poco la solución definitiva. Una web donde el código no vria en absoluto, a no ser que yo lo haga. Y junto a eso el método readline hasta la línea que yo quiero.

    Después solo hay dos posibilidades:

    - tienes la versión actualizada

    - no tienes la versión actualizada.

    Entonces comparo la línea de la web con la línea que viene incluida en el juego y si no son iguales es que no tienes la última versión dado que soy yo quien siempre tendrá la última.

    es decir el código quedará algo así:

    #### leo la web
    (no me sé el comando)
    #### alcanzo la línea deseada
    (a base de readlines)
    #### leo la línea deseada
    (con el comando readline)

    a = línea leida en la web (por ejemplo: "Version 1.2")
    b = línea que viene con el juego (por ejemplo: "Version 2.4")
    c = texto que se motrara en la pantalla de juego

    if not a = b:
    c = "Existe una nueva versión"

    Por supuesto tendré que tener en cuenta que en "b" tengo que añadir el típico "</div>" que me estorbaba antes.

    Pero lo dicho. Gracias por la respuesta y ya me estoy plantendo pasarlo a la última versión de blender porque me parecen demasiadas dificultades para algo tan simple como lo que pretendo hacer.

    Y me agrada ver que mi duda te puede servir en el futuro. Espero jugar a tus juegos.

    Un saludo y mil gracias más.

  5. #5
    Miembro Nuevo Avatar de robertsauri
    Fecha de ingreso
    Jul 2011
    Ubicación
    Catalunya
    Mensajes
    20

    Re: Suprimir parte del texto y elegir la linea a leer

    Haber, varias cosas. Primero que nada, te felicito que hayas decidido pasar a la última versión. Yo empecé a aprender Blender en la 2.49b y cuando pase a la nueva fue difícil al principio acostumbrar-se, pero una vez te acostumbras la nueva es realmente impresionante. Personalmente yo diría que desde en este último año Blender se ha convertido en el mejor software 3D que puedas encontrar (Mejor que 3DMax, Maya, etc).

    Después, muy importante que te quede claro. Si no tienes una web donde puedas poner tus archivos y descargarlos no puedes hacer un juego que se actualize solo. Mirate los "hosting gratis" y los programas FTP, en este aspecto te recomiendo FileZilla.

    Ahora. Hagas lo que hagas, el código que te di no funciona contando caracteres ni seleccionando líneas, no usa la función readline. Miratelo bien, lee los comentarios y lo veras, que lo que hace es buscar dos palabras clabe en todo el código y coje lo que haya dentro. Entonces puedes poner tu mismo las palabras clabe y así no canvia. Por ejemplo puedes hacer: "PalabraClave1 Actualización 0.1 PalabraClave2", y la duncion Exclude seria: Version = Exclude(CFuente, "PalabraClave1", "PalabraClave2").

    Bueno, espero haberte aclarado algo. No te salgas del camino del Jedi. Saludos.

  6. #6
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Thumbs up Re: Suprimir parte del texto y elegir la linea a leer

    Según lo que he llegado a entender, para utilizar filezilla es necesaria la conexión constante a Internet.

    Yo no tengo Internet en casa como para estar conectado todo el día. Tengo el Internet de 1€ el día de carrefour.

    Esa opción no me serviría.

    De todas formas estaba buscando que cuando el usuario clickara en el texto de actualización, se cerrara el juego y se abriera mi web en su navegador con la página de descarga de la versión actual.

    Después de descargarlo, obviamente, el usuario tiene que instalarlo. (este sistema no es tan automático como esperaba, pero servirá para empezar)

    Me gustaría preparar un autoextraible para que se extraiga el juego y todas sus DLLs en una ruta especificada por mi para que más adelante pueda automatizar el proceso.

    De todas formas tengo preparado un archivo .bat que copia los archivos a la ruta especificada y un acceso directo al escritorio. (Todo esto pretendo hacerlo con software gratuito para no tener que pagar licencias en caso de querer comercializar el videjuego o parte de él [pero en principio es totalmente gratuito y quiero hacerlo pensando en ir mejorandolo. Por eso estoy rompiendome el coco en hacer scripts bastante globales para que al editar algunos parámetros lo demás corra perfectamente sin tener que buscar en cada script la parte a editar.])

    Con respecto a lo de utilizar un FTP: ¿Me podría servir 000webhostí

    Es posible que esta opción no me sirva... ¿Alguna otra sugerencia?

    Con respecto a comentarios anteriores en este hilo:

    Con la descarga me refería a ponerla en MEGA y que se descargara desde ahí. Después que se moviera automáticamente la carpeta del juego a la dirección especificada sobreescribiendo los archivos existentes.

    Gracias y un saludo.

  7. #7
    Miembro Nuevo Avatar de robertsauri
    Fecha de ingreso
    Jul 2011
    Ubicación
    Catalunya
    Mensajes
    20

    Re: Suprimir parte del texto y elegir la linea a leer

    No se que has leído pero te han engañado de mala manera.

    Un FTP es solo un protocolo para transferir archivos (Filezilla = Programa para el uso de FTP). Tu pasas un archivo como una web o una actualización a un ordenador de otra empresa. Ese ordenador es el que esta las 24h encendido y es el "host", se encarga de poner la web visible para todo el mundo entre otras cosas. Un hosting gratuito es pues un espacio gratuito en un host, en ese espacio puedes poner lo que quieras y puedes crear tu web en el. De echo, toda web requeire de un host, por ejemplo el host de blogger es blogspot. Para aceder a una web concreta dentro de un host que tiene muchas webs y espacios se hace usando el punto, per eso mi blog se llama elmeunick9.blogspot.com.es y no elmeunick9.com. También puedes comprar un dominio que se redirecione a un host concreto, o incluso si tu hosting te lo permite canviar su dominio por defecto a uno propio. Eso, pero, ya es otro tema.

    En cualquier caso veo que te falta mucho camino aun, así que no insisto, solo te recomiendo que no abandones la idea del FTP, pues sin eso no vas a llegar a ningún sitio.

Temas similares

  1. Suprimir-Rellenar con photoshop
    Por FRANK SOLO en el foro Diseño Gráfico y CAD
    Respuestas: 0
    Último mensaje: 25-11-2014, 10:30
  2. Campo Texto parte del nombre del archivo
    Por Murtzia en el foro Diseño Gráfico y CAD
    Respuestas: 4
    Último mensaje: 20-08-2014, 09:16
  3. Suprimir la rejilla Grid
    Por jogan en el foro Modelado
    Respuestas: 0
    Último mensaje: 05-08-2011, 14:12
  4. Como alineo un texto a una linea
    Por Gepetto en el foro Diseño Gráfico y CAD
    Respuestas: 10
    Último mensaje: 21-04-2008, 23:10
  5. Tecla Suprimir
    Por rubbin en el foro Diseño Gráfico y CAD
    Respuestas: 10
    Último mensaje: 12-12-2007, 18:17

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •