954 09 75 24    revista@hidden-nature.com

1. Preparando lo necesario.

Bueno, hoy os voy a explicar un sencillo tutorial que he visto en biocodershub, para convertir cualquier tabla web a excel. Muchos biólogos todavía tienen miedo a estas cosas, pero aprender estas cosas, a veces, os pueden ahorrar mucho tiempo. Os lo digo por experiencia. En este caso, tendremos que hacer uso de la consola y vamos a usar python (lenguaje de programación). 

Imagino que todos usáis un sistema operativo libre ¿no? Uno de los más conocidos es Ubuntu (aunque cualquier otro es similar). Pues abrimos el terminal que de modo visual lo puedes encontrar en Aplicaciones -> Accesorios -> Terminal (que no cunda el pánico).  Si ya usas Ubuntu, deberás conocer un poquito la consola. Pues bien lo primero que vamos a instalar es lo necesario para que nuestro script en python  funcione, por tanto ejecutamos sudo apt-get install xlwt, BeautifulSoup si estamos en Mac OS X hacemos lo propio pero con los comandos:

[cc] sudo easy_install xlwt
sudo easy_install BeautifulSoup
[/cc]

En mi caso lo he ejecutado con permisos de administrador (de ahí la palabra sudo), por lo tanto en la siguiente línea de la consola te pedirá tu contraseña de usuario. En el caso de windows, será algo similar, instalamos python, abrimos una consola y ejecutamos los mismos comandos que en Mac, pero sin sudo (ya me contáis que hace tiempo que no uso windows y me da pereza abrir el VirtualBox).

Bueno, no ha sido tan complicado, ya tenemos la primera parte completada.

2. Entendiendo el concepto

Vamos a tomar la tabla de ejemplo que dan en el tutorial, que es una búsqueda en NCBI de una secuencia. Y por si no lo sabías, todo lo que ves por pantalla, es código. Por tanto vamos a ver el código fuente de los resultados. Clicamos botón derecho y damos a “ver código fuente” o pulsamos la combinación Ctrl + U | Cmd + U dependiendo del sistema operativo. Y vamos a buscar la etiqueta “<table”

[cc lang=”HTML”] <table class=”tablesorter” id=”alignmentTable” [/cc]

A partir de ahí es donde empieza nuestra tabla de datos que queremos pasar a excel.

3. El script en python

[cc lang=”python”] from BeautifulSoup import BeautifulSoup
import urllib
import xlwt
wb = xlwt.Workbook()
ws = wb.add_sheet(‘a test sheet’)
f = urllib.urlopen(“_URL_”)
html = f.read()
soup = BeautifulSoup(html)
#print soup.prettify()
#print soup

#código a buscar en la _URL_
table = soup.find(“table”,id=”alignmentTable”)

rows = table.findAll(“tr”)
x = 0
for tr in rows:
cols = tr.findAll(“td”)
if not cols:
# when we hit an empty row
# we should not print anything to the workbook
continue
y = 0
for td in cols:
texte_bu = td.text
texte_bu = texte_bu.encode(‘utf-8’)
texte_bu = texte_bu.strip()
ws.write(x, y, td.text)
print(x, y, td.text)
y = y + 1
# update the row pointer AFTER a row has been printed
# this avoids the blank row at the top of your table
x = x + 1

wb.save(‘BlastResults.xls’)
[/cc]

Lo guardamos como python_html_to_excel.py

Bueno, no se asusten que tampoco tienen que aprender mucho aquí, pero aunque no sepan programar, seguro que lo entienden si les explico un poquito qué hace ese script. La primera parte se dedica a cargar librerías (las que antes instalamos) y a partir de f = urllib.urlopen(“_URL_”) es cuando debemos sustituir _URL_ por nuestra url de resultados. Después lo que viene es la parte que se va a encargar de leer el código fuente de la web de resultados. Otra parte importante es cuando llega a table = soup.find(“table”,id=”alignmentTable”) donde básicamente le estamos diciendo que busque la tabla con la id alignmentTable (la que antes buscamos en el código fuente). Simplemente después recorremos el código de la tabla en un bucle for y extraemos la información para guardarla mediante wb.save(‘BlastResults.xls’).

Por tanto lo único que tenemos que recordar cambiar en el script es la URL de los resultados de nuestra tabla y la id de la tabla que buscamos, supongo que si tiene una clase que no se repita también vale, la cuestión es identificar la tabla.

Y por último lo más importante. ¿Cómo ejecutar el script python? Pues abrimos una consola y ejecutamos:
[cc]python python_html_to_excel.py[/cc]

Recuerda mediante el comando cd primero llegar a la carpeta donde guardaste el script. Y ya está. Una vez ejecutado el script, tendrás un archivo BlastResults.xls en el mismo directorio, con todos los resultados de la tabla web.

Ahora a jugar con los datos ; )

Fuente (en inglés): http://www.biocodershub.net/

Autor Francisco Gálvez Prada

Licenciado en Biología. Socio fundador del Centro de Investigación y Desarrollo de Recursos Científicos - BioScripts. CEO en IguannaWeb y CTO en Hidden Nature.

¡Aviso! Hidden Nature no se hace responsable de la precisión de las noticias publicadas realizadas por colaboradores o instituciones, ni de ninguno de los usos que se le dé a esta información.


Deja una respuesta

Tu correo no se hará público. Campos obligatorios marcados con *

Sigue la actualidad por correo

¿Conoces nuestra APP?

Disponible para cualquier dispositivo