Una vez me propusieron hacer el siguiente programa: "Un programa que cuente las palabras que aparecen en una web cualquiera y ordenarlas alfabéticamente". En ese momento me pregunté que para qué podría alguien querer algo así, supongo que para darle algún fin estadístico. En un principio pensé hacerlo en Perl, pero por alguna razón me vino a la cabeza BeutifulSoup para Python. Y parece que fue una buena idea. Aquí un pequeño ejemplo que funciona bien.
#!/usr/bin/python import sys, re, string, urllib # Se requiere el paquete BeautifulSoup from bs4 import BeautifulSoup # La URL es el primer argumento que recibe el programa. url = sys.argv[1] # Conversion de codigo HTML a texto plano. texto = BeautifulSoup(urllib.urlopen(url)).get_text() # Remplazo todos los caracteres ASCII de puntuacion por espacios e inicializa el Array palabrasArray = re.sub('[%s]' % re.escape(string.punctuation), ' ', texto).split() # Ordenacion sin repeticion de todos los elementos del Array numero = 0 for i in sorted(set(palabrasArray)): # Imprime solo las palabras con caracteres alfabeticos. if (i.isalpha() == True): numero += 1 print("%.3d %s" % (numero, i))
Un ejemplo de uso sería:
python contadorDePalabras.py http://www.gnu.org/
Y tiene una salida como esta:
001 About 002 Access 003 Action 004 Add 005 Allan 006 Also 007 America 008 April 009 Art 010 Attribution 011 BY 012 C 013 CC 014 Call 015 Can 016 Canada 017 Christopher 018 Chrome 019 Claim 020 Common 021 Commons ...
Seguro que se puede hacer mejor y mas profesional, pero así de primeras cumple su función.