Parsear HTML
Obtener contenido de la página
1) Importar librerías
import htmllib, urllib, formatter, sys
2) Abrir una pagina y obtener su contenido
web = urllib.urlopen('http://www.klinware.com')
data = web.read()
web.close()
3) Dar formato a la información
format = formatter.AbstractFormatter(formatter.DumbWritter(sys.stdout))
- Con DumbWritter obtenemos 72 caractéres por línea
- sys.stdout es para sacar la información por consola
4) Parsear la información HTML
ptext = htmllib.HTMLPaser(format)
ptext.feed(data)
ptext.close()
Obtener links
3) No doy ningun formato
format = formatter.AbstractFormatter(formatter.NullWriter()))
4) Parsear HTML
ptext = htmllib.HTMLParser(format)
ptext.feed(data)
5) Obtener los links de la propiedad anchorlist
for link in ptext.anchorlist:
print(link)
Scrapear citas
1) Importar librerías
import urllib, re, sys
2) Definir símbolo a escrapear
symbol = sys.argv[1]
3) Descargar contenido de página
url = 'http://finance.google.com/finance?q='
content =urllib.urlopen(url+symbol).read()
4) Scrapear citas
m = re.search('span id="ref.*>(.*)<', content)
5) Mostrar citas
if m:
quote = m.group(1)
else:
quote = 'no quote for symbol: ' + symbol
print(quote)
Web Crawler
1) Importar librerias
import urllib, htmllib, formatter, re, sys
2) Cargar la página, dar formato y parsear links
url = sys.arv[1]
web = urllib.open('http://' + url)
data = web.read()
web.close()
format = formatter.AbstractFormatter(formatter.NullWriter())
ptext = htmllib.HTMLParser(format)
ptext.feed(data)
links = []
links = ptext.anchorlist
3) Crawlear los demás links
for link in links:
if re.search('http', link) != None:
print(link)
web = urllib.urlopen(link)
data = web.read()
web.close()
ptext = htmllib.HTMLParser(format)
ptext.feed(data)
morelinks = ptext.anchorlist
for alink in morelinks:
if re.search('http', alink) != None:
links.append(alink)