[Python-es] Extraer datos de código html usando regex

Kiko kikocorreoso en gmail.com
Mie Jul 30 12:17:39 CEST 2014


2014-07-30 11:52 GMT+02:00 Chema Cortes <pych3m4 en gmail.com>:

> El 30 de julio de 2014, 10:58, Kiko <kikocorreoso en gmail.com> escribió:
>
>
>>
>>
>> El 30 de julio de 2014, 10:33, Eduard Diaz <eventgrafic en gmail.com>
>> escribió:
>>
>>  No hace falta que lo parsees a mano utiliza la libreria base64[1]
>>>
>>>
>> Creo que no lo he explicado correctamente. El problema de transformar la
>> información está resuelto. Mi problema es como obtener la información para
>> poder transformarla.
>>
>
> Así visto, no parece que te vaya a dar problemas, aunque se puede hacer
> más fácil.
>
> Alternativas:
>
> 1) Hacer que el módulo 're' extraiga la información necesaria
>
> pat = re.compile('<img src="data:image/(.*?);base64,(.*?)"',  re.DOTALL)
> for (ext, data) in pat.findall(texto):
>   ....
>
>
Sí, esta es la opción clara, el código que he puesto es un poco/bastante
sucio ya que eran pruebas


> 2) Utilizar algún módulo de scraping (eg: BeautifulSoup)
>
> from bs4 import BeautifulSoup
> soup = BeautifulSoup(html)
>
> for img in soup.find_all("img"):
>     src = img["src"]
>     ...
>
>
No quiero dependencias de terceros para una pequeña funcionalidad.


> Una vez que obtienes el 'src' puedes usar tú método con expresiones
> regulares o, mucho mejor, urlretrieve como en el método siguiente:
>
>
> 3) Utilizar urlretrieve
>
> Python2: from urllib import urlretrieve
> Python3: from urllib.request import urlretrieve
>
> import os
> import shutil
> from urllib import urlretrieve
>
> local_file, headers = urlretrieve(src)
> ext = headers.subtype
> shutil.copy(local_file, "mifichero.{}".format(ext))
>
>
>
Los ficheros serían locales generados con pandoc (IPython notebook)


>
> PD: espero que funcione tal cual, porque no he probado nada.
>

Gracias.


>
>
>
>>
>>
>>>
>>> [1]
>>> http://www.programcreek.com/2013/09/convert-image-to-string-in-python/
>>>
>>> El día 30 de julio de 2014, 9:25, Kiko <kikocorreoso en gmail.com>
>>> escribió:
>>> > Hola a todos.
>>> >
>>> > Estoy intentando extraer información de imágenes de un código html
>>> > (http://en.wikipedia.org/wiki/Data_URI_scheme)
>>> >
>>> > El formato sería el siguiente:
>>> >
>>> > <img
>>> >
>>> src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
>>> > AAALEgAACxIB0t1+/AAA" />
>>> >
>>> >
>>> > Me interesa extraer la extensión de la imagen (png en el anterior
>>> ejemplo) y
>>> > los datos que vienen después de 'base64,' hasta el cierre de comillas
>>> '"',
>>> > es decir,
>>> >
>>> 'iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
>>> > AAALEgAACxIB0t1+/AAA'.
>>> >
>>> >
>>> > Tengo un ejemplo aquí,
>>> > https://gist.github.com/anonymous/75ab61f586c19e767cf0, pero estoy
>>> seguro de
>>> > que mi regex me va a fallar en cuanto encuentre alguna cosa más rara.
>>> >
>>> > ¿Alguien me podría indicar si el regex vale o si debería modificarlo
>>> para
>>> > que no me dé falsos positivos o acepte falsos negativos?
>>> >
>>> > Muchas gracias por adelantado.
>>> >
>>> >
>>> > _______________________________________________
>>> > Python-es mailing list
>>> > Python-es en python.org
>>> > https://mail.python.org/mailman/listinfo/python-es
>>> > FAQ: http://python-es-faq.wikidot.com/
>>> >
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
> Buscador Python Hispano: http://ch3m4.org/python-es
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140730/178aa3da/attachment.html>


Más información sobre la lista de distribución Python-es