Parsear HTML con BeautifulSoup 2007-02-28
Voy a poner un ejemplo de uso de BeautifulSoup, un módulo para Python con el que podemos parsear HTML.
Lo primero que tenemos que hacer es descargar la librería desde aquí. Una vez instalado vamos a ver un sencillo ejemplo:
from BeautifulSoup import BeautifulSoup html = '''<html> <head><title>Titulo de la pagina</title></head> <body> <div id="cabecera"><h1>Cabecera</h1></div> <div id="contenido"> Vamos a poner una lista. Lista: <ul id="lista1"> <li>Elemento 1</li> <li>Elemento 2</li> <li>Elemento 3</li> <li>Elemento 4</li> </ul> </div> </body> </html>''' soup = BeautifulSoup(html) # Mostramos el titulo de la pagina print soup.head.title.string # Mostramos la cabecera print soup.find("div",{"id":"cabecera"}).contents # Mostramos el contenido contenido = soup.find("div",{"id":"contenido"}) print contenido.contents # Ahora mostramos todos los elementos de lista1 lista = contenido.find("ul",{"id":"lista1"}) for x in lista: print x.string </pre> Si en lugar de pasar una cadena con el código html quisieramos leer de una url lo podríamos hacer así: <pre name="code" class="python"> ... import urllib2 sock = urllib2.urlopen("http://servidor/documento.html") soup = BeautifulSoup(sock.read()) ...
Esto es un ejemplo muy sencillo de lo que se puede hacer, para más detalles leer la documentación.